HTTPWebRequest возвращает 401 несанкционированный - PullRequest
0 голосов
/ 12 октября 2018

Я делаю POST HTTPWebRequest на URL, чтобы загрузить файл.Проблема в том, что запрос не выполняется с ошибкой аутентификации сообщения.Но тот же запрос, сделанный через приложение POSTMAN, работает нормально.Я получаю сообщение об ошибке: Удаленный сервер возвратил ошибку: (401) Несанкционированный.Ошибка протокола.

Захват запросов между двумя этими файлами показывает, что в POSTMAN есть несколько дополнительных шифров, ec_point_formats, elliptic_curves, signature_algs.Не уверен, что это имеет значение, но в интересах краткости этого поста я не даю фактических различий, но могу предоставить, если потребуется.

Образец кода, который я использую:

// create a request 
HttpWebRequest request; = (HttpWebRequest)WebRequest.Create(inputUri);

SetProxy(inputProxyUri, inputProxyUser, inputProxyPassword, request);

request.ProtocolVersion = HttpVersion.Version11;

//Set authorization 
string authorisation = string.Format("{0}:{1}", user, pass);
string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(authorisation));
string header = string.Format("{0} {1}", "Basic", encoded);
request.Headers[HttpRequestHeader.Authorization] = header;

request.KeepAlive = false;
request.Method = "POST";

byte[] postBytes = Encoding.ASCII.GetBytes(requestParams);
request.ContentLength = postBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();

//Get response stream
System.IO.Stream responseStream = ((HttpWebResponse)request.GetResponse()).GetResponseStream();

У меня естьиграл с объектом запроса, упомянутым ниже:

request.ProtocolVersion = HttpVersion.Version11;
   request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired;

   request.UseDefaultCredentials = true;
   request.PreAuthenticate = true;
   request.Credentials = CredentialCache.DefaultCredentials;

   request.Accept = "*/*";

Также изменен реестр, чтобы включить TLS 1.2, включить TLS-1.2 для клиентских и серверных коммуникаций SCHANNEL, как упомянуто в https://www.derekseaman.com/2010/06/enable-tls-12-aes-256-and-sha-256-in.html без особой удачи.

Любая помощь будет оценена.

...