Я интегрирую веб-сервис, который будет использовать 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;
Я только что нашел этот очень удобный небольшой кусок кода , чтобы делать именно то, что вам нужно. Он добавляет заголовок авторизации в код вручную, не дожидаясь запроса сервера.
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();