概述
wsimport是jdk自帶的指令,可以根據wsdl文檔生成用戶端中間代碼,基于生成的代碼編寫用戶端,可以省很多麻煩。
先看兩張截圖:
使用浏覽器打開webservice出現的界面:
使用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
、通過-d指令指定您的java項目src路徑
、通過-p指令指定需生成包結構(指定之後會自動生成)
、通過-Xauthfile指令指定通路帶有認證的webservice授權檔案(檔案路徑或檔案名可以随意更改 特别簡單,請放心)。
、通過-keep指令指定webservice路徑
第二步 建立授權檔案(authfile.txt)
http://test:@192:/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());