SpringBoot对接WebService

本文介绍如何使用Maven引入Apache CXF库,并通过示例展示如何动态调用WebService接口。涵盖依赖配置、客户端创建及调用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、maven引入jar包

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.1.11</version>
        </dependency>
        <dependency><groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.1.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.1.11</version>
        </dependency>

2、动态调用webservice接口

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.springframework.stereotype.Component;

@Component
public class WebserviceClient {

    // 动态调用webservice接口
    public String callWebSV(String wsdUrl, String operationName, String... params) throws Exception {
        // 创建动态客户端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient(wsdUrl);
        // 需要密码的情况需要加上用户名和密码
        //client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
        Object[] objects;
        // invoke("方法名",参数1,参数2,参数3....);
        objects = client.invoke(operationName, params);
        return objects[0].toString();
    }

}

3、调用示例

    @Autowired
    WebserviceClient webserviceClient;

    String webUrl = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl";


    /**
     * http://xx.xx.xx.xx:xx/xx/services/test?testCode=&userName=xxxx&password=xxxx
     */
    public List<Map> selectLineInfo(String qqCode) {
        List<Map> list =new ArrayList<>();
        try {
            String methodName = "qqCheckOnline";
            String xmlString = webserviceClient.callWebSV(webUrl, methodName, qqCode);
            System.out.println("原始返回内容----"+xmlString);
            //List<Map> list = XMLFormatUtil.xmlToList(xmlString);
            System.out.println("获取-成功!");
            return list;
        } catch (Exception e) {
            System.out.println("获取-失败!");
            System.out.println(e);
            return null;
        }
    }
如何实现? 对于这种情况,您可以使用Spring的Web服务客户端来集成第三方Web服务。在Spring Boot项目中使用XML来配置Web服务客户端的方法如下: 1. 首先,在您的`pom.xml`文件中添加以下依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> ``` 2. 然后,在您的Spring配置文件中,定义一个`WebServiceTemplate`bean,并为其设置`Marshaller`和`Unmarshaller`。 ``` <bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate"> <property name="marshaller" ref="marshaller"/> <property name="unmarshaller" ref="unmarshaller"/> <property name="defaultUri" value="http://your.webservice.uri"/> </bean> ``` 3. 接下来,为每个操作创建一个接口,并使用`@WebServiceClient`和`@WebService`注释进行注释。例如: ``` @WebServiceClient(name = "MyService", targetNamespace = "http://your.webservice.namespace", wsdlLocation = "http://your.webservice.wsdl") public interface MyWebServiceClient { @WebMethod @WebResult(name = "result") ResultDTO myOperation(@WebParam(name = "input") InputDTO input); } ``` 4. 最后,在您的代码中,使用`@Autowired`将`WebServiceTemplate`注入到您的服务中,并使用它来调用您的Web服务操作。例如: ``` @Service public class MyService { @Autowired private WebServiceTemplate webServiceTemplate; public ResultDTO myServiceOperation(InputDTO input) { return (ResultDTO) webServiceTemplate.marshalSendAndReceive(input); } } ``` 通过以上步骤,您可以轻松地使用Spring Boot和XML配置集成第三方Web服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值