程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 調用webservice進行身份驗證,webservice身份驗證

調用webservice進行身份驗證,webservice身份驗證

編輯:關於.NET

調用webservice進行身份驗證,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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved