java wsimport 生成Webservice客戶端401認證

概述
wsimport是jdk自帶的命令,可以根據wsdl文檔生成客戶端中間代碼,基於生成的代碼編寫客戶端,可以省很多麻煩。

先看兩張截圖:

使用瀏覽器打開webservice出現的界面:
使用瀏覽器打開webservice出現的界面

使用wsimport生成webservice客戶端出現401錯誤:
使用wsimport生成webservice客戶端出現401錯誤
需用到的命令參數如下:

    1. -d <directory>      在指定的目錄生成class文件
    2. -p <pkg>      指定生成文件的包結構
    3. -Xauthfile <filepath>      在格式文件進行授權信息
    4. -keep <url>      在生成class文件,或者jar包時,同時保留java源文件  

第一步 創建wsimport生成ws命令行

wsimport -d D:\JAVA\wrokspace\您的項目\src -p com.xx.web -Xauthfile D:\JAVA\wrokspace\您的項目\authfile.txt -keep http://xxxx:9000/Service.asmx?wsdl
1、通過-d命令指定您的java項目src路徑
2、通過-p命令指定需生成包結構(指定之後會自動生成)
3、通過-Xauthfile命令指定訪問帶有401認證的webservice授權文件(文件路徑或文件名可以隨意更改 特別簡單,請放心)。
4、通過-keep命令指定webservice路徑

第二步 創建授權文件(authfile.txt)

http://test:123456@192.168.110.21:9000/Service.asmx?wsdl

第三步 在MyEclipse工具中找到對應的項目右鍵刷新
右鍵刷新項目
備註:生成完成之後項目可能會出現錯誤,將錯誤稍作修改至沒有異常即可。

第四步 嘗試調用webservice接口函數並運行項目
這裏寫圖片描述
出現了 Server returned HTTP response code: 401異常,雖然ws成功導入到項目中了但是項目訪問接口的時候沒有進行身份認證導致出現該異常。我已經在論壇裏面找到這個方法的解決方案,
原鏈接(參考#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());
    }
}

調用的時候只需要在調用接口之前調用執行該方法即可:

Authenticator.setDefault(new MyAuthenticator());

操作成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章