有這個需求,通過wsimport生成ws的客戶端代碼,環境如下:
1)有臺服務器,linux操作系統,無界面
2)同網段的某服務器發佈了webservice服務端,且發佈的wsdl文件有錯誤
針對以上需求,我寫了如下操作的步驟:
1)通過命令行訪問wsdl發佈地址,並將內容下載到本地
2)使用vim修改本地的wsdl內容
3)wsimport從本地生成客戶端
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1)通過命令行訪問wsdl發佈地址,並將內容下載到本地
使用wget即可
wget http://127.0.0.1:9001/helloworld?wsdl
文件將會下載到本地,本路徑(當前路徑)
[root@developer ws.server.test]# ls
config helloworld?wsdl inf.ini lib logs pid.temp shutdown startup
使用-P參數,可以指定文件生成位置
2)使用vim修改本地的wsdl內容
修改就好,沒啥好說
3)wsimport從本地生成客戶端
在測試的過程中,我碰到一個問題:
[root@developer ws.server.test]# wsimport -verbose -keep -p com.hinner.api -extension helloworld\?wsdl
正在解析 WSDL...
[ERROR] file:/home/zr/ws.server.test/helloworld?wsdl不可訪問
無法解析 WSDL。
這個錯誤的中文翻譯是不可訪問,一開始我以爲是權限的問題,但是不是,查了一些資料,原始應該是 unreachable,翻譯成中文是不可達到,那麼就可能是文件路徑有問題或者文件不存在。
然後看到這個?非常詭異。
那麼我直接改了文件名,於是就成功的生成了ws的客戶端。
至此,已經可以滿足需求了。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
回顧下步驟3中的這個錯誤,除了修改文件名是否還有其他辦法呢
我試過了加‘’,試過了加\,\\,可是都沒有成功,如果哪位有好辦法請留言。