当前位置: 首页 > news >正文

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-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

相关文章:

  • 你真的知道如何查看 Elasticsearch 的 Debug 日志吗?!
  • 后面的输入框与前面的联动,输入框只能输入正数(不用正则)
  • Gazebo的模型下载。
  • 面试题16.15.珠玑妙算
  • 【大数据分析与挖掘技术】概述
  • 智能助手的巅峰对决:ChatGPT对阵文心一言
  • C++浮点数比较
  • MySQL经典面试题
  • SQL执行时间过长如何优化
  • Spring MVC学习之——上传文件
  • C# .NET读取Excel文件并将数据导出到DataTable、数据库及文本
  • 什么是CSS Sprite,以及如何在页面或网站中使用它
  • 【mfc/VS2022】绘图工具设计-绘制基本图元2
  • 常用中间件漏洞
  • 笨蛋学设计模式行为型模式-观察者模式【14】
  • ----------
  • [数据结构]链表的实现在PHP中
  • C# 免费离线人脸识别 2.0 Demo
  • Create React App 使用
  • Javascript基础之Array数组API
  • JavaScript实现分页效果
  • java中具有继承关系的类及其对象初始化顺序
  • Mybatis初体验
  • redis学习笔记(三):列表、集合、有序集合
  • SpingCloudBus整合RabbitMQ
  • SpringCloud集成分布式事务LCN (一)
  • sublime配置文件
  • Vim Clutch | 面向脚踏板编程……
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 时间复杂度与空间复杂度分析
  • 译米田引理
  • 中文输入法与React文本输入框的问题与解决方案
  • Spring第一个helloWorld
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (C++)八皇后问题
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (六)激光线扫描-三维重建
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (译)计算距离、方位和更多经纬度之间的点
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)fock函数详解
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .htaccess配置重写url引擎
  • .Net 6.0 处理跨域的方式
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET分布式缓存Memcached从入门到实战
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @SentinelResource详解
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [ACM] hdu 1201 18岁生日