JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解
概述
wsimport是jdk自帶的命令,可以根據(jù)wsdl文檔生成客戶端中間代碼,基于生成的代碼編寫客戶端,可以省很多麻煩。
先看兩張截圖:
使用瀏覽器打開webservice出現(xiàn)的界面:

使用wsimport生成webservice客戶端出現(xiàn)401錯誤:
需用到的命令參數(shù)如下:
1. -d <directory> 在指定的目錄生成class文件2. -p <pkg> 指定生成文件的包結(jié)構(gòu)3. -Xauthfile <filepath> 在格式文件進行授權(quán)信息4. -keep <url> 在生成class文件,或者jar包時,同時保留java源文件
第一步 創(chuàng)建wsimport生成ws命令行
wsimport -d D:JAVAwrokspace您的項目src -p com.xx.web -Xauthfile D:JAVAwrokspace您的項目authfile.txt -keep http://xxxx:9000/Service.asmx?wsdl
1、通過-d命令指定您的java項目src路徑
2、通過-p命令指定需生成包結(jié)構(gòu)(指定之后會自動生成)
3、通過-Xauthfile命令指定訪問帶有401認證的webservice授權(quán)文件(文件路徑或文件名可以隨意更改 特別簡單,請放心)。
4、通過-keep命令指定webservice路徑
第二步 創(chuàng)建授權(quán)文件(authfile.txt)
http://test:123456@192.168.110.21:9000/Service.asmx?wsdl
第三步 在MyEclipse工具中找到對應(yīng)的項目右鍵刷新
備注:生成完成之后項目可能會出現(xiàn)錯誤,將錯誤稍作修改至沒有異常即可。
第四步 嘗試調(diào)用webservice接口函數(shù)并運行項目
出現(xiàn)了 Server returned HTTP response code: 401異常,雖然ws成功導(dǎo)入到項目中了但是項目訪問接口的時候沒有進行身份認證導(dǎo)致出現(xiàn)該異常。我已經(jīng)在論壇里面找到這個方法的解決方案,
原鏈接(參考#10):http://bbs.csdn.net/topics/370023850
import java.net.Authenticator;import java.net.PasswordAuthentication; public class MyAuthenticator extends Authenticator { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication('用戶名', '密碼'.toCharArray()); }}
調(diào)用的時候只需要在調(diào)用接口之前調(diào)用執(zhí)行該方法即可:
Authenticator.setDefault(new MyAuthenticator());

終于搞定了
直接用HttpURLConnection是不行的,這個默認只是80端口。
最后是用 Java.Net的Authenticator類 把Username和Password直接投過去(他之后對位流的處理遵守http的basic身份驗證機制)
代碼很短:
import java.net.Authenticator;import java.net.PasswordAuthentication;class MyAuthenticator extends Authenticator { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication ( 'username ', 'password '); }}
在程序中調(diào)用:
Authenticator.setDefault (new MyAuthenticator ());
希望對以后碰到這個問題的人有用
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 使用Python webdriver圖書館搶座自動預(yù)約的正確方法2. Python字符串到字節(jié)的轉(zhuǎn)換。雙反斜杠問題3. Python sublime安裝及配置過程詳解4. Linux刪除系統(tǒng)自帶版本Python過程詳解5. Python 合并拼接字符串的方法6. Python3 json模塊之編碼解碼方法講解7. python 使用事件對象asyncio.Event來同步協(xié)程的操作8. ASP.NET MVC使用jQuery ui的progressbar實現(xiàn)進度條9. Java Long類型對比分析10. ASP基礎(chǔ)知識VBScript基本元素講解

網(wǎng)公網(wǎng)安備