一、在ASP.NET中调用基于HTTP基本认证的WebService接口
在ASP.NET中调用基于HTTP基本认证的WebService接口的方法:
1、先用WSDL.EXE工具生成接口的代理类。
2、在代理类中重载GetWebRequest方法
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest request= (HttpWebRequest)base.GetWebRequest(uri);
if (PreAuthenticate)
{
NetworkCredential networkCredentials = Credentials.GetCredential(uri, "Basic");
if (networkCredentials != null)
{
byte[] credentialBuffer = new UTF8Encoding().GetBytes(
networkCredentials.UserName + ":" + networkCredentials.Password);
request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(credentialBuffer);//将验证信息添加到HTTP头
}
else
{
throw new ApplicationException("No network credentials");
}
}
return request;
}
3、在客户端使用以下方式进行调用:
WebService service = new WebService();//代理类
NetworkCredential netCredential = new NetworkCredential("test", "test");//创建网络标识,此处填写用户名和密码
Uri uri = new Uri(service.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
service.Credentials = credentials;
service.PreAuthenticate = true;
service.Method();