配置bean:
@Bean(name="agvRestTemplate")
public RestTemplate agvRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
//重點:用於將JSON、application/octet-stream
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
return restTemplate;
}
注入
@Autowired
@Qualifier(value = "agvRestTemplate")
RestTemplate agvRestTemplate;
String url = agvResource.getCallmaterial();
Map param = new HashMap();
param.put("orderId", agvLog.getOrderId());
Map params = new HashMap();
params.put("call_request", param);
//postForObject(url,param1,ClassName),url:請求地址,param1:請求參數 ClassName請求參數對應的實體類名。
//postForObject主要是將請求參數轉化為HttpEntity對象
//url為String類型,會自動轉換成encodedurl,為java.net.URI,會進一步encoded,畫蛇添足[1]
Map result = agvRestTemplate.postForObject(url, params, Map.class);
//getForObject(url,respType,MapVariables),respType:響應數據的類型,MapVariables:urlvariable參數,Map類型,key值需對應url中的變量
//url:http://127.0.0.1:8080/agv/require?order_id={orderId},注意orderId
Map result = agvRestTemplate.postForObject(url, params, Map.class);
【1】:出處