亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

spring boot中使用http請求的示例代碼

2024-07-13 10:14:21
字體:
來源:轉載
供稿:網友

因為項目需求,需要兩個系統之間進行通信,經過一番調研,決定使用http請求。

服務端沒有什么好說的,本來就是使用web 頁面進行訪問的,所以spring boot啟動后,controller層的接口就自動暴露出來了,客戶端通過調用對應的url即可,所以這里主要就客戶端。

首先我自定義了一個用來處理http 請求的工具類DeviceFactoryHttp,既然是url訪問,那就有兩個問題需要處理,一個請求服務的url,和請求服務端的參數,客戶端的消息頭請求服務的url:請求服務端url我定義的是跟客戶端一個樣的url服務端的參數:服務端的參數有兩種一種經過封裝的,類似下面這樣:

 http://localhost:8080/switch/getAllStatus?data{"interface name”:”getAllStudentStaus”}

一種是沒有經過封裝的,類似下面這樣:

 http://localhost:8080/switch/getStudentInfoByName?name=zhangSan

首先是經過封裝:

一:初始化httpclient

private static HttpClient client = null; static { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(128);cm.setDefaultMaxPerRoute(128);client = HttpClients.custom().setConnectionManager(cm).build(); }

二:獲取請求的url,因為我服務端定義的url與客戶端一樣,所以我直接使用請求客戶端的url

//根據request獲取請求的urlpublic StringBuffer getUrlToRequest(HttpServletRequest request) { StringBuffer url=request.getRequestURL();//獲取請求的url(http://localhost:8080/switch/getStudentInfoByName) String[] splitArr=url.toString().split("/"); String appName=splitArr[3];//項目名稱 String ipReport=splitArr[2];//項目ip:report String resultStr=url.toString().replaceAll(appName,DevFacConstans.facname).replaceAll(ipReport, DevFacConstans.ip+":"+DevFacConstans.report); return new StringBuffer(resultStr); }

獲取url根據/ 進行split,因為我這是測試環境,生產環境ip,端口號(域名)肯定不是localhost,有的前面還會加上項目名稱,所以我split對應的值來進行替換。

三:拼裝請求參數,調用http請求

/*** 發送http請求 有request* 給controller層調用* @param request * @return */public String sendHttpToDevFac(HttpServletRequest request)throws Exception { HttpClient client = null; String returnResult=""; // http://localhost:8080/leo/1.0/h5/login StringBuffer urlBuffer=getUrlToRequest(request);//調用第二步,獲取url //獲取參數并拼裝String dataAsJson = request.getParameter("data"); String encoderData=URLEncoder.encode(dataAsJson,"utf-8"); HttpGet get=new HttpGet(urlBuffer.append("?data=").append(encoderData).toString()); //set headersEnumeration<String> headerNames=request.getHeaderNames(); while(headerNames.hasMoreElements()) {String headerName=headerNames.nextElement(); String headerValue=request.getHeader(headerName); get.setHeader(headerName, headerValue); }client=DeviceFactoryHttp.client;logger.info("開始調用http請求,請求url:"+urlBuffer.toString());HttpResponse rep=client.execute(get); returnResult=EntityUtils.toString(rep.getEntity(),"utf-8");logger.info("http 請求調用結束!!");return returnResult; }

先獲取請求的參數,再將參數拼裝在url后面,URLEncoder.encode 這個不要忘了,因為參數會有一些符號,需要對參數進行編碼后再加入url,否則就會拋出異常,set headers:因為有部分信息服務端會從請求頭中取出,所以我將客戶端的請求頭也set到服務端的request中,請求的url和請求的參數拼好就就可以client.exceute(get)執行請求了。

上面的是我瀏覽器直接將request請求作為參數傳到我客戶端,我所以我可以直接從request中獲取url,有的是沒有request,就需要從request的上下文環境中取了。

沒有經過封裝的:

首先從上下文中獲取request的

/*** 獲取request* @return */public static HttpServletRequest getRequest(){  ServletRequestAttributes ra= (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();  HttpServletRequest request = ra.getRequest();  return request; }

二:有了request后,就有了url,下面再來解析請求參數,因為這個參數是沒有封裝的,所以獲取所有的請求參數

/** * 沒有request 請求,給controller層調用 * @param key * @param interfaceName * @param strings * @return * @throws Exception */ public String centerToDeviceFacNoRequest(String key,String interfaceName)throws Exception { try {  HttpServletRequest request=getRequest();//上面第一步,從上下文中獲取url  //獲取reuquest請求參數  Enumeration<String> names= request.getParameterNames();  Map<String,String>paramMap=new HashMap<>();  //遍歷請求map  while(names.hasMoreElements()) {   String name=names.nextElement();   String value=(String) request.getParameter(name);   paramMap.put(name, value);  }  //調用發送http請求的方法  return sendHttpToDevFacNoData(paramMap,request); } catch (Exception e) {  e.printStackTrace(); } //end return null; }

三:發送http請求

/** * 發送http請求,【沒有data數據的】 * @return */ public String sendHttpToDevFacNoData(Map<String,String>paramMap,HttpServletRequest request)throws Exception { HttpClient client = null; String result=""; StringBuffer dataBuffer=getUrlToRequest(request);//獲取url dataBuffer.append("?"); client=DeviceFactoryHttp.client; Iterator<Entry<String, String>> paamIt=paramMap.entrySet().iterator(); while(paamIt.hasNext()) {  Entry<String, String> entry=paamIt.next();  dataBuffer.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } String resultUrl=dataBuffer.toString().substring(0, dataBuffer.toString().lastIndexOf("&")); //發送請求 HttpGet get=new HttpGet(resultUrl); //set headers Enumeration<String> headerNames=request.getHeaderNames(); while(headerNames.hasMoreElements()) {  String headerName=headerNames.nextElement();  String headerValue=request.getHeader(headerName);  get.setHeader(headerName, headerValue); } HttpResponse rep=client.execute(get); logger.info("開始調用http請求,請求url:"+resultUrl); //返回結果 result=EntityUtils.toString(rep.getEntity(),"utf-8"); logger.info(" http 請求調用結束!!"); return result; } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久av大片| 91精品国产色综合久久不卡98| 欧美人交a欧美精品| 亚洲在线免费看| 亚洲福利视频久久| 97国产精品视频人人做人人爱| 久久精品国产亚洲精品| 国产精品电影网站| 国产亚洲欧洲高清一区| 欧美精品在线观看91| 日韩精品极品视频免费观看| 美女视频黄免费的亚洲男人天堂| 欧美另类高清videos| 国产欧美精品日韩精品| 亚洲成人精品视频在线观看| 日韩精品一区二区视频| 7777kkkk成人观看| 亚洲欧美日韩精品久久| 精品成人久久av| 国产亚洲视频中文字幕视频| 亚洲美女av黄| 8090理伦午夜在线电影| 精品国产精品三级精品av网址| 亚洲性线免费观看视频成熟| 一区二区在线视频播放| 国产精品欧美一区二区| 成人免费在线视频网站| 国产亚洲成精品久久| 欧美激情中文字幕乱码免费| 欧美色videos| 在线精品播放av| 欧美色道久久88综合亚洲精品| 国产日韩精品入口| 亚洲欧洲免费视频| 欧美精品久久久久a| 91精品国产自产91精品| 亚洲综合中文字幕68页| 亚洲999一在线观看www| 欧美性猛交xxxx免费看久久久| 欧美第一页在线| 91亚洲国产成人精品性色| 国产免费观看久久黄| 国产精品欧美日韩一区二区| 亚洲高清免费观看高清完整版| 日韩欧美视频一区二区三区| 性欧美xxxx视频在线观看| 久久九九有精品国产23| 69视频在线播放| 欧美成人免费在线视频| 日韩免费在线播放| 久久久久久国产精品久久| 欧美国产日韩一区二区| 欧美性xxxxxxx| 永久555www成人免费| 国产精自产拍久久久久久蜜| 精品调教chinesegay| 国产精品热视频| 国产精品va在线播放| 成人免费网站在线| 久久久久五月天| 久热国产精品视频| 日本精品久久久| 国产精品久久久久久亚洲影视| 国产成人精品视| 日韩av三级在线观看| …久久精品99久久香蕉国产| 久久99国产精品久久久久久久久| 亚洲直播在线一区| 久久久久久中文字幕| 懂色aⅴ精品一区二区三区蜜月| 一本色道久久综合亚洲精品小说| 美女av一区二区三区| 中文字幕一区电影| 亚洲色图在线观看| 国产成人精品免高潮在线观看| 91久久夜色精品国产网站| 亚洲精品美女在线| 久久在线精品视频| 一本大道久久加勒比香蕉| 日韩免费在线观看视频| 久久久国产精品一区| 久久久久久中文| 国产福利精品视频| 国产欧美精品一区二区三区-老狼| 国产日韩在线视频| 成人精品一区二区三区电影免费| 一区二区三区四区在线观看视频| 国产亚洲欧洲黄色| 久久av在线看| 亚洲爱爱爱爱爱| 欧美黄色三级网站| 精品精品国产国产自在线| 日本久久久久亚洲中字幕| 日本精品一区二区三区在线播放视频| 亚洲va欧美va国产综合久久| 色噜噜狠狠狠综合曰曰曰| www欧美日韩| 国产日韩欧美电影在线观看| 欧美韩国理论所午夜片917电影| 一区二区中文字幕| 国产美女久久精品香蕉69| 国产自摸综合网| 亚洲国内精品在线| 2025国产精品视频| 影音先锋欧美精品| 国产日产欧美精品| 日韩av免费在线观看| 欧美日韩第一视频| 欧美丝袜一区二区| 国产精品96久久久久久又黄又硬| 九九热视频这里只有精品| 亚洲成人中文字幕| 亚洲第一av网站| 欧美精品18videos性欧| 91精品在线影院| 亚洲另类xxxx| 国产成人一区二区在线| 亚洲男人天堂九九视频| 97在线观看免费高清| 日韩欧美国产免费播放| 国产精品999| 国产精品中文字幕在线观看| 精品国产一区二区三区久久久狼| 久久99亚洲精品| 亚洲成色999久久网站| 欧美精品videossex88| 亚洲伊人久久大香线蕉av| 亚洲a成v人在线观看| 欧美整片在线观看| 亚洲成年人在线| 日本精品视频在线观看| 国产精品毛片a∨一区二区三区|国| 91手机视频在线观看| 中文亚洲视频在线| 欧美成人国产va精品日本一级| 在线观看日韩www视频免费| 欧美乱人伦中文字幕在线| 亚洲色图校园春色| 91精品国产91久久久久| 成人久久久久久久| www.久久久久久.com| 91国产美女在线观看| 色婷婷av一区二区三区在线观看| 国产精品成人品| 5566成人精品视频免费| 国产精品久久久久久久久久三级| 国产精品视频一区二区三区四| 成人免费视频xnxx.com| 91视频免费网站| 大胆人体色综合| 亚洲精品日韩丝袜精品| 国产精品免费一区| 国产欧美一区二区三区在线| 日韩中文字幕视频| 成人中文字幕+乱码+中文字幕| 久久久久久久久久亚洲| 国产精品毛片a∨一区二区三区|国| 国产精品成人一区二区三区吃奶| 国产成人自拍视频在线观看| 亚洲国产成人一区| 久久久国产精彩视频美女艺术照福利| 国a精品视频大全| 深夜精品寂寞黄网站在线观看| 亚洲欧美制服另类日韩|