RestTemplate发送post请求,并传josn格式的参数
第一种情况:这个第三方的接口接收数据的时候是@RequestBody修饰的
代码片段供参考:
public Boolean getSalesInfoByUpdateTime(String startTime,String endTime) {
String salesinfoUrl = "http://----------------"
//设置消息头
HttpHeaders headers = setHeaders();
//把参数封装成 实体类
PhDateTime time = new PhDateTime();
time.setStartTime(startTime);
time.setEndTime(endTime);
//自定义 httpEntity
HttpEntity<?> httpEntity = new HttpEntity<>(time, headers);
//创建一个响应接收数据的对象
ParameterizedTypeReference<ResponseObject<PhSalesInfo>> responseBodyType = new ParameterizedTypeReference<ResponseObject<PhSalesInfo>>() {};
ResponseEntity<ResponseObject<PhSalesInfo>> res = restTemplate.exchange(salesinfoUrl, HttpMethod.POST, httpEntity, responseBodyType);
//得到值
List<PhSalesInfo> data = res.getBody().getData();
return true;
}
最重要的是
POST请求传参消息头设置请求参数
private HttpHeaders setHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("Accept-Charset", "UTF-8");
return headers;
}
第二种情况:这个第三方的接口接收数据的时候是@RequestParam修饰的
直接把参数拼在url后面即可
public List<String> getContNoByDate(String queryDate) {
String contnoUrl = "http://---------"
ParameterizedTypeReference<PhjkbCustomResponseEntity<String>> responseBodyType = new ParameterizedTypeReference<PhjkbCustomResponseEntity<String>>() {
};
ResponseEntity<ResponseObject<String>> res = restTemplate.exchange(contnoUrl+"?queryDate="+queryDate, HttpMethod.GET, HttpEntity.EMPTY, responseBodyType);
List<String> prtNos =res.getBody().getData();
return prtNos;
}
返回响应的实体类 ResponseObject,根据接口返回的报文而定
例如
public class ResponseObject<T> {
private boolean success;
private String errorCode;
private String errorMsg;
private List<String> errorMsgList;
private List<T> data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public List<String> getErrorMsgList() {
return errorMsgList;
}
public void setErrorMsgList(List<String> errorMsgList) {
this.errorMsgList = errorMsgList;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
}