溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解

發(fā)布時間:2020-10-16 14:58:23 來源:腳本之家 閱讀:277 作者:liness0713 欄目:開發(fā)技術(shù)

概述

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

先看兩張截圖:

使用瀏覽器打開webservice出現(xiàn)的界面:

JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解

使用wsimport生成webservice客戶端出現(xiàn)401錯誤:

JAVA WSIMPORT生成WEBSERVICE客戶端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:\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命令指定需生成包結(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工具中找到對應的項目右鍵刷新

JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解 

備注:生成完成之后項目可能會出現(xiàn)錯誤,將錯誤稍作修改至沒有異常即可。

第四步 嘗試調(diào)用webservice接口函數(shù)并運行項目

JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解 

出現(xiàn)了 Server returned HTTP response code: 401異常,雖然ws成功導入到項目中了但是項目訪問接口的時候沒有進行身份認證導致出現(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());

JAVA WSIMPORT生成WEBSERVICE客戶端401認證過程圖解

終于搞定了

直接用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)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI