项目中要请求别的项目的接口,所以使用RestTemplate进行请求,使用spring注入的方式
注意这里要先在maven中引入jackson
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
spring中的配置<bean id="httpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/octet-stream;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<ref bean="httpMessageConverter"></ref>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>text/javascript;charset=utf-8</value>
</list>
</property>
</bean>
</list>
</property>
<constructor-arg ref="simpleClientHttpRequestFactory"></constructor-arg>
</bean>
<bean id="simpleClientHttpRequestFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">
<property name="connectTimeout" value="6000"></property>
<property name="readTimeout" value="40000"></property>
</bean>
java中使用@autowired注入
@Autowired
private RestTemplate restTemplate;
private JSONObject getDataFromServer(String url, JSONObject object) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JSONObject data = null;
String objectStr = JsonUtils.parseBeanToJson(object);
log.info("MD5加密数据:" + objectStr + "123456");
String check = Md5Util.getMD5(objectStr + "123456");
Map<String, String> m = new HashMap<>();
m.put("check", check);
m.put("json", objectStr);
HttpEntity<Map<String, String>> entity = new HttpEntity<>(m, headers);
try {
log.info("请求第三方发送的url为:{}; 参数:{},", url, JSONObject.fromObject(m));
data = restTemplate.postForObject(url, entity, JSONObject.class);
log.info("请求第三方返回数据:{}", JSONObject.fromObject(data));
} catch (Exception e) {
log.error("请求网络地址数据报错:", e);
}
return data;
}