restTemplate 如何进行application/json的请求方式
@SuppressWarnings("unused")
@Component
public class RestRequest implements IDataRequest<HttpRequestParam> {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public String request(HttpRequestParam param) throws IllegalArgumentException, RequestException, TimeoutException {
String httpUrl = param.getUrl();
SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
httpRequestFactory.setReadTimeout(param.getReadTimeout());
httpRequestFactory.setConnectTimeout(param.getConnectTimeout());
RestTemplate rest = new RestTemplate(httpRequestFactory);
String result = "";
try {
result = rest.postForObject(httpUrl, buildRestParam(param), String.class);
} catch (RestClientException e) {
logger.error(e.getMessage(), e, e.getCause());
throw new RequestException(e.getMessage(), e);
}
logger.info("Rest请求成功结果报文长度:{}",result.length());
if (result.length() < 50) {
logger.error("Rest请求失败:{}", result);
}
return result;
}
@Override
public String requestJson(HttpRequestParam param) throws IllegalArgumentException, RequestException, TimeoutException {
String httpUrl = param.getUrl();
SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
httpRequestFactory.setReadTimeout(param.getReadTimeout());
httpRequestFactory.setConnectTimeout(param.getConnectTimeout());
RestTemplate rest = new RestTemplate(httpRequestFactory);
rest.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); //设置转换编码
String result = "";
try {
//application/json 请求
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param.getUrlParams(), requestHeaders);
result = rest.postForObject(httpUrl, requestEntity, String.class);
} catch (RestClientException e) {
logger.error(e.getMessage(), e, e.getCause());
throw new RequestException(e.getMessage(), e);
}
logger.info("Rest请求成功结果报文长度:{}",result.length());
if (result.length() < 50) {
logger.error("Rest请求失败:{}", result);
}
return result;
}
protected MultiValueMap<String, Object> buildRestParam(HttpRequestParam param) {
MultiValueMap<String, Object> httpParam = new LinkedMultiValueMap<String, Object>();
if (param.getUrlParams().size() == 0) {
return httpParam;
}
for (String key : param.getUrlParams().keySet()) {
Object value = param.getUrlParams().get(key);
if (value instanceof File) {
FileSystemResource resource = new FileSystemResource((File) value);
httpParam.add(key, resource);
} else {
httpParam.add(key, value);
}
}
return httpParam;
}
}