1

Я пытаюсь связаться с REST API bit.ly, используя их модифицированную версию базовой аутентификации. Однако для этого для работы HttpWebRequest необходимо прикрепить учетные данные по первому запросу, однако HttpWebRequest не будет отправлять учетные данные по первому запросу и будет ожидать 401 перед отправкой любых учетных данных, даже если для PreAuthenticate установлено значение true (с PreAuthenticate it будет отправлять учетные данные для всех последующих запросов)..Net CF 2.0 HttpWebRequest предварительная аутентификация и отправка учетных данных по первому запросу

Я попытался следующие, чтобы получить HttpWebRequest работать так, как bit.ly требует:

(1) Отправить запрос в формате http://username:[email protected]/method.

Не поддерживается bit.ly (так как это поддельная реализация базовой проверки подлинности, они проверяют только заголовок).

(2) Вручную введите заголовок «Авторизация» в HttpWebRequest.

Невозможно в .Net CF, поскольку заголовок авторизации защищен, и любая попытка изменить защищенное значение заголовка завершается с ошибкой и генерирует исключение ArgumentException.

(3) Наследовать HttpWebRequest или WebRequest в другом классе, чтобы реализовать требуемое поведение.

Невозможно, так как класс HttpWebRequest зарегистрирован для обслуживания запросов по схемам HTTP и HTTPS по умолчанию. Попытки зарегистрировать другого потомка WebRequest для этих схем не удастся, поскольку дублирующиеся префиксы не будут разрешены.

У кого-нибудь есть предложения?

ответ

1

Примечание к (2). Я использовал метод, описанный в http://blog.kowalczyk.info/article/Forcing-basic-http-authentication-for-HttpWebReq.html, для ввода заголовка авторизации, и он отлично работает в .NET CF 2.0.

public void SetBasicAuthHeader(WebRequest req, String userName, String userPassword) 
{ 
    string authInfo = userName + ":" + userPassword; 
    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); 
    req.Headers["Authorization"] = "Basic " + authInfo; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^