RestTemplate发送请求并携带header信息


http://www.cnblogs.com/hujunzheng/p/6018505.html

****************************

 

v1、使用restTemplate的postForObject方法

  注:目前没有发现发送携带header信息的getForObject方法。

复制代码
HttpHeaders headers = new HttpHeaders(); Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String key = (String) headerNames.nextElement(); String value = request.getHeader(key); headers.add(key, value); } String restStrResult = restTemplate.postForObject(url, /*携带header*/new HttpEntity<String>(headers), String.class,
             /*携带parameter*/request.getParameterMap());
复制代码

v2、使用restTemplate

复制代码
import java.util.Enumeration; import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; public class RestTemplateUtil { private RestTemplate restTemplate; public void setRestTemplate(RestTemplate restTemplate) { this.restTemplate = restTemplate; } public String post(ServletRequest req, String url, Map<String, ?> params) { ResponseEntity<String> rss = request(req, url, HttpMethod.POST, params); return rss.getBody(); } public String get(ServletRequest req, String url, Map<String, ?> params) { ResponseEntity<String> rss = request(req, url, HttpMethod.GET, params); return rss.getBody(); } public String delete(ServletRequest req, String url, Map<String, ?> params) { ResponseEntity<String> rss = request(req, url, HttpMethod.DELETE, params); return rss.getBody(); } public String put(ServletRequest req, String url, Map<String, ?> params) { ResponseEntity<String> rss = request(req, url, HttpMethod.PUT, params); return rss.getBody(); } /** * @param req * @param url * @param method * @param params maybe null * @return */ private ResponseEntity<String> request(ServletRequest req, String url, HttpMethod method, Map<String, ?> params) { HttpServletRequest request = (HttpServletRequest) req; //获取header信息 HttpHeaders requestHeaders = new HttpHeaders(); Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String key = (String) headerNames.nextElement(); String value = request.getHeader(key); requestHeaders.add(key, value); } //获取parameter信息 if(params == null) { params = request.getParameterMap(); } HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders); ResponseEntity<String> rss = restTemplate.exchange(url, method, requestEntity, String.class, params); return rss; } }
复制代码

v 3.restTemplate以json格式发送post请求

  1.发送请求

复制代码
  public String _post(ServletRequest req, String url, Map<String, ?> params) { HttpServletRequest request = (HttpServletRequest) req; //拿到header信息 HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setContentType(MediaType.APPLICATION_JSON); Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String key = (String) headerNames.nextElement(); String value = request.getHeader(key); requestHeaders.add(key, value); } net.sf.json.JSONObject jsonParams = net.sf.json.JSONObject.fromObject(params); HttpEntity<net.sf.json.JSONObject> requestEntity = new HttpEntity<net.sf.json.JSONObject>(jsonParams, requestHeaders); String result = restTemplate.postForObject(url, requestEntity, String.class); return result; }
复制代码

  2.接收处理

复制代码
   @RequestMapping("/xxx")  
    @ResponseBody  
    public String xxx(HttpServletRequest request) throws IOException { String jsonString = getBodyString(request.getReader()); JSONObject jbJsonObject = new JSONObject().fromObject(jsonString); User user = (User) JSONObject.toBean(jbJsonObject, User.class); System.out.println(jbJsonObject); System.out.println("id:" + user.getUserName());return null; } @RequestMapping("/xxx2") @ResponseBody public String xxx2(User user) throws IOException { System.out.println("---------------"); System.out.println(user.getUserName()); System.out.println(user.getPassWord()); System.out.println("---------------"); if (true) { return "success"; } else { return "fail"; } }      public String getBodyString(BufferedReader br) {     String inputLine;     String str = "";     try {       while ((inputLine = br.readLine()) != null) {       str += inputLine;     }       br.close();     } catch (IOException e) {       System.out.println("IOException: " + e);     }     return str;   }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM