JAVA WSIMPORT生成WEBSERVICE客戶端401認(rèn)證過程圖解
概述
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> 在格式文件進(jìn)行授權(quán)信息
4. -keep <url> 在生成class文件,或者jar包時,同時保留java源文件
第一步 創(chuàng)建wsimport生成ws命令行
wsimport -d D:\JAVA\wrokspace\您的項(xiàng)目\src -p com.xx.web -Xauthfile D:\JAVA\wrokspace\您的項(xiàng)目\authfile.txt -keep http://xxxx:9000/Service.asmx?wsdl
1、通過-d命令指定您的java項(xiàng)目src路徑
2、通過-p命令指定需生成包結(jié)構(gòu)(指定之后會自動生成)
3、通過-Xauthfile命令指定訪問帶有401認(rèn)證的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àng)目右鍵刷新
備注:生成完成之后項(xiàng)目可能會出現(xiàn)錯誤,將錯誤稍作修改至沒有異常即可。
第四步 嘗試調(diào)用webservice接口函數(shù)并運(yùn)行項(xiàng)目
出現(xiàn)了 Server returned HTTP response code: 401異常,雖然ws成功導(dǎo)入到項(xiàng)目中了但是項(xiàng)目訪問接口的時候沒有進(jìn)行身份認(rèn)證導(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是不行的,這個默認(rèn)只是80端口。
最后是用 Java.Net的Authenticator類 把Username和Password直接投過去(他之后對位流的處理遵守http的basic身份驗(yàn)證機(jī)制)
代碼很短:
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í)有所幫助,也希望大家多多支持腳本之家。
- java調(diào)用webservice的.asmx接口的使用步驟
- Java中ExecutorService和ThreadPoolExecutor運(yùn)行原理
- Java調(diào)用WebService接口作測試
- JAVA調(diào)用SAP WEBSERVICE服務(wù)實(shí)現(xiàn)流程圖解
- Java 使用Axis調(diào)用WebService的示例代碼
- java使用xfire搭建webservice服務(wù)的過程詳解
- Java使用ExecutorService來停止線程服務(wù)
- Java解析調(diào)用webservice服務(wù)的返回XML串詳解
- 在spring boot中使用java線程池ExecutorService的講解
- java 出現(xiàn)NullPointerException的原因及解決辦法
- Java中避免NullPointerException的方法總結(jié)
- Java xml出現(xiàn)錯誤 javax.xml.transform.TransformerException: java.lang.NullPointerException
- Zend Studio for Eclipse的java.lang.NullPointerException錯誤的解決方法
- java靜態(tài)工具類注入service出現(xiàn)NullPointerException異常處理
相關(guān)文章
JAVA實(shí)現(xiàn)簡單停車場系統(tǒng)代碼
JAVA項(xiàng)目中正號需要一個停車收費(fèi)系統(tǒng),就整理出來java實(shí)現(xiàn)的一個簡單的停車收費(fèi)系統(tǒng)給大家分享一下,希望對大家有所幫助2017-04-04SpringMVC 中HttpMessageConverter簡介和Http請求415 的問題
本文介紹且記錄如何解決在SpringMVC 中遇到415 Unsupported Media Type 的問題,并且順便介紹Spring MVC的HTTP請求信息轉(zhuǎn)換器HttpMessageConverter2016-07-07Springmvc發(fā)送json數(shù)據(jù)轉(zhuǎn)Java對象接收
這篇文章主要介紹了Springmvc發(fā)送json數(shù)據(jù)轉(zhuǎn)Java對象接收,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10spring boot使用thymeleaf為模板的基本步驟介紹
Spring Boot項(xiàng)目的默認(rèn)模板引擎是Thymeleaf,這沒什么好說的,個人覺得也非常好,下面這篇文章主要給大家介紹了關(guān)于spring boot使用thymeleaf為模板的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Java深入講解二十三種設(shè)計(jì)模式之中的策略模式
策略模式屬于Java 23種設(shè)計(jì)模式中行為模式之一,該模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。本文將通過示例詳細(xì)講解這一模式,需要的可以參考一下2022-05-05java SelectableChannel的使實(shí)例用法講解
在本篇文章里小編給大家整理的是一篇關(guān)于java SelectableChannel的使實(shí)例用法講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03Springboot讀取外部配置文件,項(xiàng)目部署時配置讀取不到問題及解決
這篇文章主要介紹了Springboot讀取外部配置文件,項(xiàng)目部署時配置讀取不到問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06