Принуждение стандартной аутентификации в WebRequest

Я интегрирую веб-сервис, который будет использовать HTTP-POST, чтобы запросить и получить данные. Удаленный сервер требует стандартной аутентификации согласно RFC 2617

Мои попытки пройти проверку подлинности перестали работать.

Это перестало работать в этом, даже при том, что я присоединяю объект 'NetworkCredential' к свойству 'Credentials' объекта 'HttpWebRequest', никакая информация аутентификации не отправляется в заголовке, даже если я установил, 'Предварительно проходят проверку подлинности' = верный.

Что я пропускаю?

//блок используется

NetworkCredential netCredential = new NetworkCredential(" uid", "pwd");

Uri uri = new Uri("http://address of services");

ICredentials credentials = netCredential.GetCredential(uri, "Basic");

objRegistration.Credentials = credentials;

objRegistration.PreAuthenticate = true;
50
задан Samuel Jack 16 July 2010 в 04:29
поделиться

1 ответ

Я только что нашел этот очень удобный небольшой кусок кода , чтобы делать именно то, что вам нужно. Он добавляет заголовок авторизации в код вручную, не дожидаясь запроса сервера.

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

Используйте это так

var request = WebRequest.Create("http://myserver.com/service");
SetBasicAuthHeader(request, userName, password);

var response = request.GetResponse();
112
ответ дан 7 November 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: