Java如何調(diào)用wsdl的webservice接口
java開發(fā),當(dāng)我們獲取到了對(duì)方提供的wsdl地址,然后在網(wǎng)頁(yè)上能夠訪問(wèn)wsdl文檔以后,如何調(diào)用對(duì)方的webservic呢?
一.首先了解下WSDL
WSDL(網(wǎng)絡(luò)服務(wù)描述語(yǔ)言,Web Services Description Language)是一門基于 XML 的語(yǔ)言,用于描述 Web Services 以及如何對(duì)它們進(jìn)行訪問(wèn)。

二.如何生成webService客戶端去調(diào)用服務(wù)端
1.報(bào)存wsdl的xml文件:并將其后綴改為wsdl

2.把保存的 wsdl 文件加進(jìn)項(xiàng)目,創(chuàng)建一個(gè)包,放在下面.

3.使用idea自帶插件,Tools -> WebServices -> Generatte Java Code From Wsdl (這里有坑,idea版本低于2020的 沒(méi)有WebServices)

生成如下圖:

生成是會(huì)加入依賴:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.11</version>
<scope>compile</scope>
</dependency>這里涉及到 Spring整合CXF
三.客戶端參考代碼
public static void main(String[] args) throws Exception {
WebServiceConfig cfg = WebServiceConfig.getInstance();
ISysNotifyTodoWebService service = (ISysNotifyTodoWebService) callService(cfg.getAddress(), cfg.getServiceClass());
// 請(qǐng)?jiān)诖颂幪砑訕I(yè)務(wù)代碼
NotifyTodoContext context = new NotifyTodoContext();
//數(shù)據(jù)格式要參考對(duì)方給的數(shù)據(jù)格式
context.setSubject("測(cè)試待辦webservice~~~");
context.setLink("http://news.sina.com.cn/");
context.setType(2);
context.setKey("sinaNews");
context.setModelId("123456789");
context.setTargets("{\"Id\":\"12fe2de141b7b97b32d1af34204a9f54\"}");
context.setOptTime("2022-01-25 09:25:09");
NotifyTodoAppResult result = service.sendTodo(context);
if (result != null) {
if (result.getReturnState() != 2)
System.out.println(result.getMessage());
}
}
/**
* 調(diào)用服務(wù),生成客戶端的服務(wù)代理
*
* @param address WebService的URL
* @param serviceClass 服務(wù)接口全名
* @return 服務(wù)代理對(duì)象
* @throws Exception
*/
public static Object callService(String address, Class serviceClass) throws Exception {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// 記錄入站消息
factory.getInInterceptors().add(new LoggingInInterceptor());
// 記錄出站消息
factory.getOutInterceptors().add(new LoggingOutInterceptor());
// 添加消息頭驗(yàn)證信息。如果服務(wù)端要求驗(yàn)證用戶密碼,請(qǐng)加入此段代碼
// factory.getOutInterceptors().add(new AddSoapHeader());
factory.setServiceClass(serviceClass);
factory.setAddress(address);
// 使用MTOM編碼處理消息。如果需要在消息中傳輸文檔附件等二進(jìn)制內(nèi)容,請(qǐng)加入此段代碼
// Map props = new HashMap();
// props.put("mtom-enabled", Boolean.TRUE);
// factory.setProperties(props);
// 創(chuàng)建服務(wù)代理并返回
return factory.create();
}不同的環(huán)境(開發(fā)\測(cè)試\生產(chǎn))注意修改 IP 和端口

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 如何往已經(jīng)存在的excel表格里面追加數(shù)據(jù)的方法
這篇文章主要介紹了java 如何往已經(jīng)存在的excel表格里面追加數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
ShardingSphere JDBC強(qiáng)制路由使用的項(xiàng)目實(shí)踐
在某些特定場(chǎng)景下,可能需要繞過(guò)分片規(guī)則直接定位到特定的數(shù)據(jù)庫(kù)或表,這種情況下就可以使用HintRouting,本文就來(lái)介紹一下ShardingSphere JDBC強(qiáng)制路由使用的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-06-06
@PathParam和@QueryParam區(qū)別簡(jiǎn)析
這篇文章主要介紹了@PathParam和@QueryParam區(qū)別,分享了相關(guān)實(shí)例代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Java使用EasyExcel實(shí)現(xiàn)高效的Excel讀寫操作
在日常開發(fā)中,Excel 文件的讀寫操作是一個(gè)常見的需求,EasyExcel 是阿里巴巴開源的一個(gè)高性能、易用的 Excel 讀寫庫(kù),可以大幅提高處理 Excel 文件的效率,本篇博客將從 EasyExcel 的基本概念、優(yōu)勢(shì)、安裝、讀寫操作以及高級(jí)用法展開,需要的朋友可以參考下2024-12-12

