zoukankan      html  css  js  c++  java
  • 调用webservice进行身份验证

       因为同事说在调用webservice的时候会弹出身份验证的窗口,直接调用会返回401,原因是站点部署的时候设置了身份验证(账号名称自己配置)。因而在调用的时候需要加入身份验证的凭证。

       

       至于如何获取身份验证的凭据呢?可以使用微软提供的NetworkCredential(命名空间是System.Net),代码如下。

       

    using System;
    using System.Net;
    using webserviceSync.helloWebservice;
    
    namespace webserviceSync
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                MySoapHeader my = new MySoapHeader();
                my.UserName = "";
                Response.Write(webserviceClient.HelloWorld(my));
    
            }
    
            /// <summary>
            /// 获取网络凭证
            /// </summary>
            /// <returns></returns>
            public static NetworkCredential GetCredential()
            {
                //return new NetworkCredential("Administrator", "888888", "192.168.2.58");//简单直接
                return (NetworkCredential)CredentialCache.DefaultCredentials;//需要本地设置凭据
            }
    
            /// <summary>
            /// 验证凭证是否能通过
            /// </summary>
            /// <returns></returns>
            public static bool IsVerifySucess()
            {
                string url = "http://192.168.2.58:7777/WebService.asmx?wsdl";
                WebResponse webResponse = null;
                try
                {
                    WebRequest webRequest = WebRequest.Create(url);
                    webRequest.Credentials = GetCredential();
                    webRequest.Timeout = 15000;
                    webResponse = webRequest.GetResponse();
                }
                catch (Exception ex)
                { throw ex; }
                return true;
            }
    
    
            /// <summary>
            /// 属性
            /// </summary>
            private static WebServiceSoapClient _webserviceClient = null;
            /// <summary>
            /// webservice服务
            /// </summary>
            public static WebServiceSoapClient webserviceClient
            {
                get
                {
                    if (_webserviceClient == null)
                    {
                        bool isSucess = IsVerifySucess();
                        if (isSucess == true)
                        {
                            _webserviceClient = new WebServiceSoapClient();
                            _webserviceClient.ClientCredentials.Windows.ClientCredential = GetCredential();//这属性........
                        }
                    }
                    return _webserviceClient;
                }
            }
    
        }
    }

    如何在本地设置凭据可以参考http://jingyan.baidu.com/article/a3aad71aaa32eeb1fb0096c8.html

  • 相关阅读:
    asp.net大文本保存 framework4.0
    temp文件夹权限对ASP网站以及ASP.NET网站的影响【转载】
    将access数据转移到sql server
    MVC图片上传、剪辑、缩略、水印
    魔兽War3按键精灵Ⅱ(201294)
    PHP中应用CKEditor和CKFinder上传图片读取图片
    C#中get和set个人理解
    asp.net验证码实现
    转三篇文章关于php中session机制
    ORM组件 ELinq (五)映射配置之XML
  • 原文地址:https://www.cnblogs.com/lflyq/p/6094335.html
Copyright © 2011-2022 走看看