今天就跟大家聊聊有关http请求怎么在spring boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司是一家专注于成都网站设计、成都做网站与策划设计,福清网站建设哪家好?成都创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:福清等地区。福清做网站价格咨询:13518219792
首先是经过封装:
一:初始化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获取请求的url
public 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/h6/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 headers
Enumeration 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 names= request.getParameterNames();
MapparamMap=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(MapparamMap,HttpServletRequest request)throws Exception { HttpClient client = null; String result=""; StringBuffer dataBuffer=getUrlToRequest(request);//获取url dataBuffer.append("?"); client=DeviceFactoryHttp.client; Iterator > paamIt=paramMap.entrySet().iterator(); while(paamIt.hasNext()) { Entry 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 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; }
看完上述内容,你们对http请求怎么在spring boot中使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。