使用浏览器的https(OData)请求有效,c#WebRequest失败并显示401

时间:2019-01-23 16:31:27

标签: httpwebrequest webrequest http-status-code-401

首先,在Chrome中对网址的请求有效。它会提示我输入用户名和密码,然后输入页面,并显示页面(这是OData请求)。

更新:该代码现已生效。过去,它在相同的URL上起作用,当我遇到此问题时,它正在为其他URL工作。但是有一段时间,它在我的系统上失败了。万一有人对我应该对以下代码进行更改的任何建议,我将保留这个问题。

但是以下代码以401失败:

WebRequest request = WebRequest.Create(url);
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";

var credentials = new NetworkCredential(username, password);
var credentialCache = new CredentialCache();
Uri uri = new Uri(url);
Uri site = new Uri(uri.GetLeftPart(UriPartial.Authority));
credentialCache.Add(site, "Negotiate", credentials);
credentialCache.Add(site, "Digest", credentials);
credentialCache.Add(site, "Basic", credentials);
credentialCache.Add(new Uri(url), "NTLM", credentials);
request.Credentials = credentialCache;

// this throws the exception
return request.GetResponse();

投掷:

  

System.Net.WebException HResult = 0x80131509 Message =远程   服务器返回错误:(401)未经授权。来源=系统
  StackTrace:位于System.Net.HttpWebRequest.GetResponse()   WindwardReportsDrivers.net.windward.AccessProviders.protocols.AllHttpAccessProvider.Request(字符串   url,NetworkCredential凭据,IDictionary 2 headers, Dictionary 2 allProps)中   C:\ git \ Jenova \ engine \ DotNetEngine \ WindwardReportsDrivers \ net \ windward \ AccessProviders \ protocols \ AllHttpAccessProvider.cs:line   108

0 个答案:

没有答案