本人微信 zf363133213 欢迎各位添加好友,共同探讨问题
第一种方法:
public Object test(){
HttpHeaders headers = new HttpHeaders();//http请求头
RestTemplate restTemplate = new RestTemplate();
headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
headers.add("versionNo","123");
Map
body.put("carNo","123");
HttpEntity
Map
//String jsonStr =restTemplate.postForObject("http://test/get",requestEntity,String.class);
retrurn map;
}
第二种方法:
public Object test(){
Map
content.put("carNo","123");//请求参数
HttpClient httpClient = new HttpClient();
PostMethod post = new PostMethod("http://test/get");
post.addRequestHeader("appId","123");
post.addRequestHeader("content-type","application/json;charset=utf-8");
RequestEntity entity =new StringRequestEntity(JSONObject.toJSONString(content),"application/json;charset=utf-8","utf-8");
post.setRequestEntity(entity);
httpclient.executeMethod(post);
String info=new String(post.getResponseBody(),"utf-8");
return info;
}
第三种带token的
@Autowired
private RestTemplate restTemplate;
@Value("${monthRouteUrl}")//在配置文件中配置url
private String url;
定义header方法:
private HttpHeaders createHttpHeaders(String token){
HttpHeaders headers = new HttpHeaders();
//自定义表头
headers.setContentType(new MediaType("application","json",Charset.forName("UTF-8")));
//设置接收
headers.setAccept(Lists.newArrayList(MediaType.APPLICATION_JSON));
headers.setAcceptCharset(Lists.newArrayList(Charset.forName("UTF-8")));
//把token加入header中
headers.add("token",token);
return headers;
}
private Map
//head 调上面方法
HttpHeaders headers = createHttpHeaders(earlywarning.getToken());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
//封装参数对象和请求头
HttpEntity
//调用
ResponseEntity
//得到返回状态
String status = exhange.getStatusCode().toString();
//最终我们想转成的对象集合,具体属性要和写这个接口的人返回的属性一样
List
if("200".contains(status)){
Map map = JSON.parseObject(exchange.getBody(),Map.class);
if(null != map.get("data")){
String data = map.get("data").toString();
//data就是返回的,把他转换为我们需要的对象
dimensions = JSON.parseArray(data,SelectDimensionDTO.class);
}
dimensions 就可以用了
}
}
第四种 如果不通过他的权限过滤,不要token
则如下:
private MonthlyRouteDTO getMonthRoute(DetailPageDimensionDTO detailPageDimensionDTO ){
//我们想要最终转换的对象,属性要跟这个接口的属性一致
MonthRoutDTO monthRoutDTO = null;
//直接调工具类方法,参数是url和detailPageDimensionDTO
String result = HttpUtil.requestPost(url,detailPageDimensionDTO );
log.info("-----远程调用:{}----",null== result?null:JSONObject.toJSONString(result));
if(!StringUtils.isEmpty(result)){
Map map = JSON.parseObject(result,Map.class);
String status = (String)map.get("code")
if("1000".equals(status)){
String data = map.get("data").toString();
monthlyRouteDTO = JSON.parseObject(data,MonthlyRouteDTO.class);
}
}
}
//工具类
@Slf4j
public class HttpUtil{
public static String requestPost(String strUrl ,Object content){
String info = null;
try{
HttpClient httpclient = new HttpClient();
PostMethod post = new PostMethod(strUrl);
post.addRequestHeader("Content-Type","application/json;charset=utf-8");
RequestEntity entity = new StringRequestEntity(JSONObject.toJSONString(content),"application/json;charset=utf-8","utf-8");
post.setRequestEntity(entity);
httpclient.executeMethod(post);
info = new String(post.getResponseBody(),"utf-8");
return info;
} catch(Exception e){
log.info("-------requestPost异常:{}",e)
}
return "";
}