Java工具类:使用RestTemplate请求WebService接口


一、场景

对接第三方提供的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-8
        MediaType 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

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值