java使用spring RestTemplate 调用 webservice服务

项目基础环境是spring boot的

spring boot相关知识不做详解

webservice 基本结构如下

java使用spring RestTemplate 调用 webservice服务_第1张图片

webservice 相关调试,获取请求参数可参考

参考

pom中不需要额外引用

  • 配置RestTemplateConfig
package com.xxxx.base.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
	return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
	SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
	factory.setReadTimeout(5000);// ms
	factory.setConnectTimeout(15000);// ms
	return factory;
    }
}
  • 调用注入
@Autowired
private RestTemplate restTemplate;

  • 调用
//构造webservice请求参数
			StringBuffer soapRequestData = new StringBuffer("");
			soapRequestData.append("");
			soapRequestData.append("");
			soapRequestData.append("");
			soapRequestData.append("");
			soapRequestData.append("?");// 固定值参数
			soapRequestData.append("?");// 固定参数
			soapRequestData.append("");
			soapRequestData.append(
					"???1.0]]>");// 固定参数
			soapRequestData.append("");
			soapRequestData.append("");
			soapRequestData.append("");
			soapRequestData.append("");

			//构造http请求头
			HttpHeaders headers = new HttpHeaders();
			MediaType type = MediaType.parseMediaType("text/xml;charset=UTF-8");
			headers.setContentType(type);
			HttpEntity formEntity = new HttpEntity(soapRequestData.toString(), headers);

			//返回结果
			String resultStr = restTemplate.postForObject(url, formEntity, String.class);
			//转换返回结果中的特殊字符,返回的结果中会将xml转义,此处需要反转移
			String tmpStr = StringEscapeUtils.unescapeXml(resultStr);
			//获取真正的结果
			String resultXML = com.jetsum.base.framework.api.utils.StringUtils.substringBetween(tmpStr, "", "");

  • 解析结果

此处不再贴代码,每个接口返回的结果不一样

*** 注意:***

  1. url不需要带?wsdl,带了以后会返回接口定义
  2. 返回结果需要使用xml反转义

转载于:https://my.oschina.net/softxiang/blog/854412

你可能感兴趣的:(java使用spring RestTemplate 调用 webservice服务)