webservice调用远程服务
目前自己参考网上博客写的两种方式,我这里用的是springboot,废话不多说,直接上代码
首先是pom依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.11</version>
</dependency>
</dependencies>
然后就是java代码
我直接把两个方法写在一个类里面了
package com.yikete.controller;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.w3c.dom.Document;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.soap.SOAPBinding;
import java.io.ByteArrayOutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Controller
public class Test {
/**
* 方法一:用cxf框架
* @param url
* @param method
* @param args
* @return
*/
@RequestMapping("/hello")
@ResponseBody
public Map<String, Object> hello(String url, String method, String[] args) {
if (args.length < 1) {
args = new String[]{
""};
}
// 创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient(url);
// 需要密码的情况需要加上用户名和密码
// client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME,PASS_WORD));
// 命名空间,方法名
QName name = new QName("http://WebXml.com.cn/", method);
HashMap<String, Object> map = new HashMap<>();
try {
// invoke("方法名",参数1,参数2,参数3....);
Object[] objects = client