Я пытаюсь связаться с REST API bit.ly, используя их модифицированную версию базовой аутентификации. Однако для того, чтобы это работало, HttpWebRequest необходимо прикрепить учетные данные в первом запросе, однако HttpWebRequest не будет отправлять учетные данные в первом запросе и будет ждать 401, прежде чем отправлять какие-либо учетные данные, даже если PreAuthenticate имеет значение true (с PreAuthenticate отправит учетные данные для всех последующих запросов).
Я попытался выполнить следующее, чтобы HttpWebRequest работал так, как этого требует bit.ly:
(1) Отправьте запрос в формате http://username:password@api.bi.ly/method.
Не поддерживается bit.ly (так как это ложная реализация базовой аутентификации, они проверяют только заголовок).
(2) Ввести заголовок «Авторизация» вручную в запрос HttpWebRequest.
Невозможно в .Net CF, поскольку заголовок авторизации защищен, и любая попытка изменить значение защищенного заголовка завершается неудачей и вызывает исключение ArgumentException.
(3) Наследовать HttpWebRequest или WebRequest в другом классе, чтобы реализовать требуемое поведение.
Невозможно, поскольку класс HttpWebRequest зарегистрирован по умолчанию для запросов на обслуживание для схем HTTP и HTTPS. Попытки зарегистрировать другого потомка WebRequest для этих схем потерпят неудачу, так как повторяющиеся префиксы не допускаются.
Значит, у кого-нибудь есть предложения?