天下有道

--因为责任,我们才能勇敢,因为责任,我们才能无私,也因为责任 ,我们才有了不断前进的动力。

在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();

posted on 2008-03-25 10:51  HZM  阅读(2117)  评论(0)    收藏  举报

导航