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

使用wsimport生成webservice客戶端出現401錯誤:
需用到的命令參數如下:
1. -d <directory> 在指定的目錄生成class文件
2. -p <pkg> 指定生成文件的包結構
3. -Xauthfile <filepath> 在格式文件進行授權信息
4. -keep <url> 在生成class文件,或者jar包時,同時保留java源文件
第一步 創(chuàng)建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路徑
第二步 創(chuàng)建授權文件(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());
}
}
調用的時候只需要在調用接口之前調用執(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 ");
}
}
在程序中調用:
Authenticator.setDefault (new MyAuthenticator ());
希望對以后碰到這個問題的人有用
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- java調用webservice的.asmx接口的使用步驟
- Java中ExecutorService和ThreadPoolExecutor運行原理
- Java調用WebService接口作測試
- JAVA調用SAP WEBSERVICE服務實現流程圖解
- Java 使用Axis調用WebService的示例代碼
- java使用xfire搭建webservice服務的過程詳解
- Java使用ExecutorService來停止線程服務
- Java解析調用webservice服務的返回XML串詳解
- 在spring boot中使用java線程池ExecutorService的講解
- java 出現NullPointerException的原因及解決辦法
- Java中避免NullPointerException的方法總結
- Java xml出現錯誤 javax.xml.transform.TransformerException: java.lang.NullPointerException
- Zend Studio for Eclipse的java.lang.NullPointerException錯誤的解決方法
- java靜態(tài)工具類注入service出現NullPointerException異常處理
相關文章
Mybatis in條件傳參的三種實現方式(直接$,List,[])
這篇文章主要介紹了Mybatis in條件傳參的三種實現方式(直接$,List,[]),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
spring cloud config分布式配置中心的高可用問題
本文給大家介紹spring cloud config分布式配置中心的高可用問題,通過整合Eureka來實現配置中心的高可用,需要的朋友參考下本文2018-01-01

