RestTemplate常用的get和post带参数请求
在RestTemplate提供的方法中,有一个参数就是目标URL,参数是跟在后面的一个数量可变参数,但是在这里就有个问题,这个方法怎么知道我传的参数值是对应在目标接口的哪个参数的呢:
public <T> T postForObject(String url, Object request, Class<T> responseType, Object... uriVariables)
比如有个url的链接是post方式请求,然后需要提供name和id两个参数,返回值是一个json,然后调用:
JSONObject result = restTemplate.postForObject(url, null, JSONObject.class, "张三", "2");
这里就无法分辨张三是name还是2是name。所以post一般是把参数封装到request里面。
JSONObject msg = new JSONObject(); msg.put("key", "@*2y9$jl"); msg.put("receiver", receiverEcommerceId); msg.put("title", title); msg.put("content", content); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity request = new HttpEntity(msg.toJSONString(), headers); JSONObject result = restTemplate.postForObject(url, request, JSONObject.class);
get方式带参数:
String url=http://test.com/url?param1={param1}¶m2={param2}; Map<String, Object> params = new HashMap<>(); params.put("param1", "value1"); params.put("param2", "value2"); JSONObject mutiData = restTemplate.getForObject(url, JSONObject.class, params);
值得一提的是,如果是把url配置在properties配置文件里面的,sax解析会出错,得把&替换成&