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