只有wsdl添加webservice 帶身份驗證的WebService使用(特別是SAP PI發布的)總結(備忘錄)


總結如下:

1.如果客戶只給了WSDL地址如:http://www.xxxxxx.com:50000?wsdl ,而開發電腦又無法訪問這個地址時,怎么添加服務引用,有兩種方法

一.在能訪問這個地址的電腦上用瀏覽器打開這個地址,會看到類似如下的xml,用瀏覽器的另存為,存為一個xml文件,將xml保存到開發電腦上,用vs的添加web引用,在引用地址里輸入xml文件的路徑,即可完成引用.

二.在能夠訪問wsdl地址的電腦上,利用svcutil.exe 工具生成代理類和配置文件,然后將文件復制到項目中即可調用.具體請參考以下:

http://www.cnblogs.com/scottckt/archive/2012/05/20/2510716.html

http://www.cnblogs.com/hedongsong/archive/2012/12/19/2824646.html

2.如果webservice使用了身份驗證時怎么使用(特別是SAP PI發布的)

 var smsService = new SmSendService.osSMS_LMSService();

 var proxy = new WebProxy("webservice服務地址", true);
proxy.Credentials = new NetworkCredential("UserName", "Pwd");

 smsService.Proxy = proxy;
smsService.Credentials = new NetworkCredential("UserName", "Pwd");

紅色字體是關鍵部分,需要注意的是代理和service的身份驗證都要設置用戶名和密碼.

以下是幾種錯誤的處理方式:

提示:遠程服務器返回了意外響應: (407) Proxy Authentication Required。 ---> System.Net.WebException: 遠程服務器返回錯誤: (407) 需要代理身份驗證。

此問題是因為沒有設置代理或者沒有為代理指定身份驗證.

var proxy = new WebProxy("webservice服務地址", true);

proxy.Credentials = new NetworkCredential("UserName", "Pwd");

 smsService.Proxy = proxy;

加上這幾句就ok了.

如果出現 System.Net.WebException: 請求因 HTTP 狀態 401 失敗: Unauthorized。

加上smsService.Credentials = new NetworkCredential("UserName", "Pwd");這句就ok了

或者是讓服務發布方啟用匿名訪問也可以.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM