我正在集成将使用的网络服务
HTTP-POST 用于请求和检索数据。远程服务器
需要根据 RFC 2617 进行基本身份验证
我的身份验证尝试失败了。
它失败的原因是,即使我将“NetworkCredential”对象附加到“HttpWebRequest”对象的“Credentials”属性,标头中也不会发送任何身份验证信息,
即使我设置“PreAuthenticate”= true。
我缺少什么?
//使用的块
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;
我刚刚发现这个非常方便的小东西代码块 http://blog.kowalczyk.info/article/Forcing-basic-http-authentication-for-HttpWebReq.html准确地做您需要的事情。它手动将授权标头添加到代码中,而不等待服务器的质询。
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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)