栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java springBoot搭建webService服务与调用webService

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java springBoot搭建webService服务与调用webService

一、服务端:


1.添加依赖:

        
            org.apache.cxf
            cxf-spring-boot-starter-jaxws
            3.4.3
        
        
            org.apache.cxf
            cxf-rt-transports-http-jetty
            3.4.3
        

2.创建webService接口

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
//name:与接口中的name一致,区分作用,无太大意义
//targetNamespace:与接口中的命名空间一致,一般是接口的包名倒写
@WebService(name = "WebServiceDemo", targetNamespace = "http://service.webServicetest.docus.cn")
public interface WebServiceDemo {
    @WebMethod
    String webServiceTest(@WebParam String action,@WebParam String xml);
}

3.创建实现类:

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class WebServiceDemoImpl implements WebServiceDemo {
    @Override
    public String webServiceTest(String action,String xml) {
        log.info("xml:{}",xml);
        return "n" +
                "    
n" + " n" + " n" + "
n" + " n" + " 0n" + " 成功n" + " n" + "
"; } }

4.配置webService发布服务

import cn.docus.webservicetest.service.WebServiceDemo;
import lombok.extern.slf4j.Slf4j;
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;

@Slf4j
@Configuration
public class WebServiceConfig {
    @Autowired
    private WebServiceDemo webServiceDemo;
    @Autowired
    private Bus bus;
    @Value("${server.port}")
    private String port;
    private static final String path = "/api";

    @Bean
    public Endpoint userServiceEndpoint() {
        EndpointImpl userEndpoint = new EndpointImpl(bus, webServiceDemo);
        userEndpoint.publish(path);
        log.info("在线的wsdl:http://localhost:"+port+"/services{}?wsdl",path);
        return userEndpoint;
    }
}
二、测试

浏览器输入:http://localhost:8080/services/api?wsdl

或者使用soapUI工具测试(xml字符串必须用转义): 

三、客户端:

1.添加依赖:

        
            org.apache.axis
            axis
            1.4
        
        
            commons-discovery
            commons-discovery
            0.2
            
                
                    commons-logging
                    commons-logging
                
            
        
        
            org.apache.axis
            axis-jaxrpc
            1.4
        

2.执行调用:

import cn.docus.webservicetest.utils.XmlUtils;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import java.util.HashMap;
import java.util.Map;

@SpringBootTest
class WebservicetestApplicationTests {

    @Test
    void contextLoads() {
        try {
            String url = "http://localhost:8080/services/api?wsdl";
            String namespaceURI = "http://service.webServicetest.docus.cn";
            String webServiceMethod = "webServiceTest";
            String paramName1 = "arg0";
            String paramName2 = "arg1";
            String[] params = {"123456","n" +
                    "    
n" + " 30n" + " n" + "
n" + " n" + " n" + " n" + " NFYKDXNFYYn" + " n" + " En" + " 220708n" + " n" + " n" + " n" + " n" + " ZZYXKEBQ-重症医学科二病区n" + " n" + " NFYKDXNFYYn" + " 科室地址n" + " 18665000637#11100637n" + " n" + " n" + " n" + " n" + " ZZYXKEBQn" + " n" + " 2015-05-23n" + " 1n" + " n" + " n" + " n" + " Nn" + " n" + " n" + " n" + " n" + "
"}; //实例化org.apache.axis.client.Service对象 Service service = new Service(); //创建service调用对象 Call call = (Call) service.createCall(); //设置发布地址 call.setTargetEndpointAddress(url); //设置命名空间与方法名 call.setOperationName(new QName(namespaceURI,webServiceMethod)); //按顺序设置请求参数、请求类型,多个需多添加参数 //设置第一个参数 call.addParameter(paramName1, XMLType.XSD_STRING, ParameterMode.IN); //设置第二个参数 call.addParameter(paramName2, XMLType.XSD_STRING, ParameterMode.IN); //设置返回类型 call.setReturnType(XMLType.XSD_STRING); //执行调用 String result = (String) call.invoke(params); System.out.println(result); //解析xml String responseKey = "Body.ResultCode"; Map map = new HashMap<>(); map = XmlUtils.parseXml2Map(result,map); String responseValue = map.get(responseKey); System.out.println(responseValue); } catch (Exception e) { e.printStackTrace(); } } }

 3.解析xml字符串工具类:

        
            dom4j
            dom4j
            1.6.1
        
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.StringReader;
import java.util.Iterator;
import java.util.Map;

public class XmlUtils {
    
    public static Map parseXml2Map(String xml, Map map) {
        try {
            SAXReader reader = new SAXReader();
            Document doc = reader.read(new StringReader(xml));
            Element root = doc.getRootElement();
            String path = "";
            if (map.containsKey(root.getName().trim())) {
                path = map.get(root.getName().trim());
                map.remove(root.getName().trim());
            }
            for (Iterator i = root.elementIterator(); i.hasNext();) {
                Element element = (Element) i.next();
                if (element.isTextOnly()) {
                    if (path.length() > 0) {
                        map.put(path + element.getName().trim(), element.getTextTrim());
                    } else {
                        map.put(element.getName().trim(), element.getTextTrim());
                    }
                } else {
                    map.put(element.getName().trim(), path+ element.getName().trim() + ".");
                    parseXml2Map(element.asXML(), map);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885131.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号