日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RestTemplate发送请求并携带header信息

發(fā)布時間:2025/3/8 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RestTemplate发送请求并携带header信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、使用restTemplate的postForObject方法

  注:目前沒有發(fā)現(xiàn)發(fā)送攜帶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());

2、使用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;} }

?3.restTemplate以json格式發(fā)送post請求

  1.發(fā)送請求

  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; }

?

4.?RestTemplate 的兩個 postForObject方法的使用

  private static String post(String url, JSONObject params, MediaType mediaType) {RestTemplate restTemplate = new RestTemplate();//拿到header信息HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.setContentType(mediaType);HttpEntity<JSONObject> requestEntity = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8) ? new HttpEntity<JSONObject>(params, requestHeaders) : new HttpEntity<JSONObject>(null, requestHeaders);restTemplate.setErrorHandler(new ResponseErrorHandler() {@Overridepublic boolean hasError(ClientHttpResponse response) throws IOException {return response.getStatusCode().value() != HttpServletResponse.SC_OK;}@Overridepublic void handleError(ClientHttpResponse response) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(response.getBody()));String str = null;while((str = br.readLine()) != null) {System.out.println(str);}}});String result = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8) ? restTemplate.postForObject(url, requestEntity, String.class) : restTemplate.postForObject(expandURL(url, params.keySet()), requestEntity, String.class, params);return result;}private static String expandURL(String url, Set<?> keys){final Pattern QUERY_PARAM_PATTERN = Pattern.compile("([^&=]+)(=?)([^&]+)?");Matcher mc = QUERY_PARAM_PATTERN.matcher(url);StringBuilder sb = new StringBuilder(url);if(mc.find()) {sb.append("&");} else {sb.append("?");}for(Object key : keys) {sb.append(key).append("=").append("{").append(key).append("}").append("&");}return sb.deleteCharAt(sb.length()-1).toString();}

?

5.最強版RestTemplateUtils

import com.alibaba.fastjson.JSONObject; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.converter.FormHttpMessageConverter; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestTemplate;import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** @Title: RestTemplateUtils.java* @Prject: sensorsdata* @Package: com.springboottest.sensorsdata.utils* @Description: TODO* @author: hujunzheng* @date: 2017年4月20日 下午2:07:18* @version: V1.0*/ public class RestTemplateUtils {/*** @ClassName: DefaultResponseErrorHandler* @Description: TODO* @author: hujunzheng* @date: 2017年4月20日 下午2:15:27*/private static class DefaultResponseErrorHandler implements ResponseErrorHandler {@Overridepublic boolean hasError(ClientHttpResponse response) throws IOException {return response.getStatusCode().value() != HttpServletResponse.SC_OK;}@Overridepublic void handleError(ClientHttpResponse response) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(response.getBody()));StringBuilder sb = new StringBuilder();String str = null;while ((str = br.readLine()) != null) {sb.append(str);}try {throw new Exception(sb.toString());} catch (Exception e) {e.printStackTrace();}}}/*** @param url* @param params* @return* @Title: get* @author: hujunzheng* @Description: TODO* @return: String*/public static String get(String url, JSONObject params) {RestTemplate restTemplate = new RestTemplate();restTemplate.setErrorHandler(new DefaultResponseErrorHandler());String response = restTemplate.getForObject(expandURL(url, params.keySet()), String.class, params);return response;}/*** @param url* @param params* @param mediaType* @return* @Title: post* @author: hujunzheng* @Description: 將參數(shù)都拼接在url之后* @return: String*/public static String post(String url, JSONObject params, MediaType mediaType) {RestTemplate restTemplate = new RestTemplate();// 拿到header信息HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.setContentType(mediaType);HttpEntity<JSONObject> requestEntity = (mediaType == MediaType.APPLICATION_JSON|| mediaType == MediaType.APPLICATION_JSON_UTF8) ? new HttpEntity<JSONObject>(params, requestHeaders): new HttpEntity<JSONObject>(null, requestHeaders);restTemplate.setErrorHandler(new DefaultResponseErrorHandler());String result = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8)? restTemplate.postForObject(url, requestEntity, String.class): restTemplate.postForObject(expandURL(url, params.keySet()), requestEntity, String.class, params);return result;}/*** @param url* @param params* @param mediaType* @param clz* @return* @Title: post* @author: hujunzheng* @Description: 發(fā)送json或者form格式數(shù)據(jù)* @return: String*/public static <T> T post(String url, JSONObject params, MediaType mediaType, Class<T> clz) {RestTemplate restTemplate = new RestTemplate();//這是為 MediaType.APPLICATION_FORM_URLENCODED 格式HttpEntity 數(shù)據(jù) 添加轉(zhuǎn)換器//還有就是,如果是APPLICATION_FORM_URLENCODED方式發(fā)送post請求,//也可以直接HttpHeaders requestHeaders = new HttpHeaders(createMultiValueMap(params),true),就不用增加轉(zhuǎn)換器了restTemplate.getMessageConverters().add(new FormHttpMessageConverter());// 設(shè)置header信息HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.setContentType(mediaType);HttpEntity<?> requestEntity = (mediaType == MediaType.APPLICATION_JSON|| mediaType == MediaType.APPLICATION_JSON_UTF8)? new HttpEntity<JSONObject>(params, requestHeaders): (mediaType == MediaType.APPLICATION_FORM_URLENCODED? new HttpEntity<MultiValueMap>(createMultiValueMap(params), requestHeaders): new HttpEntity<>(null, requestHeaders));restTemplate.setErrorHandler(new DefaultResponseErrorHandler());T result = (mediaType == MediaType.APPLICATION_JSON || mediaType == MediaType.APPLICATION_JSON_UTF8)? restTemplate.postForObject(url, requestEntity, clz): restTemplate.postForObject(mediaType == MediaType.APPLICATION_FORM_URLENCODED? url: expandURL(url, params.keySet()), requestEntity, clz, params);return result;}private static MultiValueMap<String, String> createMultiValueMap(JSONObject params) {MultiValueMap<String, String> map = new LinkedMultiValueMap<>();for(String key : params.keySet()) {if(params.get(key) instanceof List) {for(Iterator<String> it=((List<String>) params.get(key)).iterator(); it.hasNext(); ) {String value = it.next();map.add(key, value);}} else {map.add(key, params.getString(key));}}return map;}/*** @param url* @param keys* @return* @Title: expandURL* @author: hujunzheng* @Description: TODO* @return: String*/private static String expandURL(String url, Set<?> keys) {final Pattern QUERY_PARAM_PATTERN = Pattern.compile("([^&=]+)(=?)([^&]+)?");Matcher mc = QUERY_PARAM_PATTERN.matcher(url);StringBuilder sb = new StringBuilder(url);if (mc.find()) {sb.append("&");} else {sb.append("?");}for (Object key : keys) {sb.append(key).append("=").append("{").append(key).append("}").append("&");}return sb.deleteCharAt(sb.length() - 1).toString();} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/hujunzheng/p/6018505.html

總結(jié)

以上是生活随笔為你收集整理的RestTemplate发送请求并携带header信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av综合站 | 一区二区精 | 亚洲日本va中文字幕 | 中文av字幕| 国产精品亚洲一区二区无码 | 国产在线视频资源 | 波兰性xxxxx极品hd | 久久久久久视 | 亚洲国产精品成人综合在线 | 欧美伦理片网站 | 2019中文在线观看 | 无码人妻精品一区二区三区66 | 亚洲精品色午夜无码专区日韩 | 精品视频无码一区二区三区 | 亚洲麻豆av | 日韩成人午夜电影 | a v在线视频 | 色婷婷香蕉在线一区二区 | 三级麻豆| 老色批影视 | 国产精品久久 | 人妖videosex高潮另类 | 亚洲乱码视频 | 免费一级特黄毛大片 | av特黄 | 亚洲 小说 欧美 激情 另类 | 成人激情开心 | 很嫩很紧直喷白浆h | 一区二区不卡在线观看 | 成人写真福利网 | 日韩欧美极品 | 五月天堂色| 爱插美女网 | 久久久不卡国产精品一区二区 | 成年人在线免费观看 | 黄视频在线 | 伊人99re | 老熟女高潮一区二区三区 | 精品熟女一区 | 日韩欧美综合在线 | www.四虎影视| 国产一区二区三区毛片 | 久久无码性爱视频 | 91无毒不卡 | 宅男午夜影院 | 亚洲激情六月 | 国产91在线高潮白浆在线观看 | 九九影视理伦片 | 欧美人与禽zoz0性3d | 亚洲乱码国产乱码精品精大量 | 欧美韩国日本 | 亚洲欧美成人一区二区三区 | 午夜电影天堂 | 久操视频网站 | 日本3级网站 | 久久婷婷五月综合 | 久久国产二区 | 久久亚洲影视 | 中文字幕网址在线 | 日本三级视频在线观看 | 四虎视频在线 | 激情文学久久 | 日韩中文字幕影院 | 日韩小视频在线观看 | 中文字幕超碰在线 | 久久久久人妻一区 | 成人在线免费观看网站 | 日本欧美久久久久免费播放网 | av免费网 | 狠狠综合久久av一区二区 | 韩国伦理片在线播放 | 欧美在线一区二区三区四区 | 国内精品一区二区 | 久久久999精品视频 国产在线xx | 欧美日韩一区二区三区四区 | 公侵犯一区二区三区四区中文字幕 | 中文字幕超清在线免费观看 | 蜜桃视频日韩 | 老熟妇仑乱一区二区av | 有机z中国电影免费观看 | 激情网久久 | 亚洲女人毛茸茸 | 亚洲欧洲激情 | 国产乱子一区二区 | 国产1区2区3区中文字幕 | 四虎永久在线观看 | 在线免费观看黄色片 | 性猛交╳xxx乱大交 偷偷操不一样的久久 | 星空大象在线观看免费播放 | 久久四色 | 天堂综合 | 久久福利视频网 | 糖心视频在线 | 免费在线看污片 | 少妇日皮视频 | 欧美日韩视频在线播放 | 国产精品69久久 | 日本一区二区三区四区视频 | 成人午夜高清 |