При попытке вызвать удаленный сервер, используя следующий код, я всегда получаю несанкционированное исключение с сервера:
HttpWebRequest webRequest;
var myURI = "https://myURI";
webRequest = (HttpWebRequest)WebRequest.Create(myURI);
webRequest.Method = "GET";
string myCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("myUsername" + ":" + "myPassword"));
webRequest.Headers.Add("Authorization", "Basic " + myCredentials);
HttpWebResponse webResponse;
webResponse = (HttpWebResponse)webRequest.GetResponse();
string response = string.Empty;
using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
{
response = sr.ReadToEnd();
sr.Close();
}
Система. Net .WebException: 'Удаленный сервер возвратил ошибку : (401) Не авторизовано. '
WWW-Authenticate: Basi c realm = "геосервер"
Cache-Control: proxy-revalidate
Соединение: Keep-Alive
Set-Cook ie: BCSI-CS - ********** = 1; Путь = /
Поддержка прокси: аутентификация на основе сеанса
Тип содержимого: текст / обычный; charset = UTF-8
Content-Length: 23
Это немного странно, потому что, если я пытаюсь (почти) то же самое через почтальона, это работает, и я получаю правильный ответ от удаленного сервера (без 401).
Я также пробовал другие способы, такие как следующий код, но ничего не помогает:
CredentialCache cc = new CredentialCache();
cc.Add(
new Uri("https://mywebserver/webpage"),
"Basic", //also tried NTLM
new NetworkCredential("user", "password"));
webRequest.Credentials = cc;
Если я пытаюсь вызвать другой сервер с таким же кодом работает.