目录
- 一、场景
- 二、工具类
一、场景
对接第三方提供的WebService
接口,早期的调用方式过于复杂繁琐,所以使用RestTemplate
进行调用
二、工具类
package com.xxx.util;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;/*** WebService请求工具类** @author hcs** @date 2024/1/19 11:18*/
public class WebServiceRequestUtil {private static Logger logger = LoggerFactory.getLogger(WebServiceRequestUtil.class);private static RestTemplate restTemplate = SpringUtil.getBean(RestTemplate.class);/*** 发起webservice请求* * @param url* @return*/public static String webServiceRequest(String url) {// 创建一个请求头对象HttpHeaders headers = new HttpHeaders();// 设置请求头对象contentTyp的为text/xml;charset=UTF-8MediaType type = MediaType.parseMediaType("text/xml;charset=UTF-8");headers.setContentType(type);// 将请求参数进行封装并进行远程接口服务调用// 构造webservice请求参数// 请求参数,根据实际情况进行配置,以下仅作为示例StringBuilder requestData = new StringBuilder();requestData.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");requestData.append("<soapenv:Envelope xmlns:soapenv=\"http://根据实际情况配置\" xmlns:esb=\"http://根据实际情况配置\">");requestData.append("<soapenv:Header/>");requestData.append("<soapenv:Body>");// 请求参数,根据实际情况进行配置,以下仅作为示例requestData.append("<ESB_USER>").append("zhangsan").append("</ESB_USER>");requestData.append("<ESB_PWD>").append("123456").append("</ESB_PWD>");requestData.append("</soapenv:Body>");requestData.append("</soapenv:Envelope>");logger.info("请求报文为:" + requestData.toString());logger.info("url:" + url);try {// 创建请求HttpEntity<String> request = new HttpEntity<>(requestData.toString(), headers);// 发送post请求并获取到响应结果String str = restTemplate.postForObject(url, request, String.class);logger.info("-----------Response content-----------: " + str);return str;} catch (Exception e) {logger.error("baseWebServiceRequest出现异常:" + e.getMessage(), e);}return null;}
}
注:除了RestTemplate
之外,HttpURLConnection
等也可以用来调用webservice接口
如果需要将xml转为Json,可参考:http://t.csdnimg.cn/thZzN