import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang.StringUtils;/*** <p> *  <h3>Web Request 工具类</h3>*  <span> 该类使用 abstaract 修饰,防止用户创建对象。其方法一般为静态,如添加非静态方法,修改者需提供具体子类。<span>*     <pre></pre>* </p>*/
public abstract class RequestUtils {/*** <p> 解析客户端的 ip 地址  </p>*/public static String getIpAddr(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}return ip;}/*** <p>获取 request body 中的内容</p>* <span>该方法会抛出 IOException ,需调用者处理或者抛到更上层</span>*/public static String getRequestBody(HttpServletRequest request) throws IOException {StringBuilder sb = new StringBuilder() ;BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));String line;//避免程序异常退出不能关闭try {while((line = br.readLine()) != null) {sb.append(line);}}finally { br.close();}return sb.toString();}}

转载于:https://www.cnblogs.com/zyf-yxm/p/10572344.html

http请求requestUtils相关推荐

  1. php调用restful接口_jzq_sdk_php

    jzq_sdk_php #一.环境依赖 ##php版本 php最低版本以composer.json中require.php为准,现为>=5.3.39 以前版本 此程序是对ebq/jzq_api工 ...

  2. struts2 处理请求流程分析(结合源码)

    http://zhxing.iteye.com/blog/541059 struts2 源码版本2.0.11.1 本文是综合网上部分人的分析成果,然后再自己结合源码进行的,分析中如有错误,请指正. 从 ...

  3. Spring Cloud Gateway 之获取请求体的几种方式

    一.直接在全局拦截器中获取 伪代码如下 private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){Flux& ...

  4. Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)

    Volley框架: 特点: 通信更快,更简单 Get,Post网络请求及网络图像的高效率异步处理请求. 当多个请求时,对网络请求进行排序,按优先级处理 当网络状况不好时,Volley可以自动对上次请求 ...

  5. 服务网关zuul之二:过滤器--请求过滤执行过程(源码分析)

    Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能: 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求. 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生成 ...

  6. 如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率

    在平常的开发中经常会有很多列表页面,每做一个列表页就需要创建这个布局文件那个Adapter适配器文件等等一大堆与之相关的附属的不必要的冗余文件.如果版本更新迭代比较频繁,如此以往,就会使项目工程变得无 ...

  7. java http请求原理_浅谈Spring Cloud zuul http请求转发原理

    spring cloud 网关,依赖于netflix 下的zuul 组件 zuul 的流程是,自定义 了ZuulServletFilter和zuulServlet两种方式,让开发者可以去实现,并调用 ...

  8. JAVA发送HttpClient请求及接收请求结果过程

    1.写一个HttpRequestUtils工具类,包括post请求和get请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  9. struts2请求过程源代码分析

    struts2请求过程源代码分析 Struts2是Struts社区和WebWork社区的共同成果.我们甚至能够说,Struts2是WebWork的升级版.他採用的正是WebWork的核心,所以.Str ...

最新文章

  1. 2021-04-06 符号执行是啥?
  2. linux vi/vim使用
  3. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(六) MiniGUI 提供的非 GUI/GDI 接口...
  4. 在游戏里模拟天空的颜色,太迷人了!
  5. 交叉驰豫的影响因素_深度讲解:膝关节韧带为什么容易断裂?这5点因素影响非常大...
  6. 错误:document.getElementById(userForm).submit();Object is not a function
  7. 京东回应「被薅 7000 万、项目组全体开除」;微信朋友圈屏蔽支付宝集五福;MySQL 8.0.19 发布 | 极客头条...
  8. HDU2020 绝对值排序【排序】
  9. 增强型绿植植被指数_MODIS增强型植被指数EVI与NDVI初步比较-中国科学院.PDF
  10. 交换机下接路由器lan还是wan_同一网络中如何配置多个路由器?
  11. Python编辑器你选哪个?我选PyCharm
  12. Noip 2016 蛋碎一地晚节不保
  13. 利用FME(myfme)将MAPGIS格式的土地处用现状图完美转换为CAD
  14. 谷歌ai人工智能叫什么_用Google新的AI强大工具翻译古代象形文字
  15. spo0lsv病毒分析
  16. 红牛v5 android cm12.1 分辨率修改
  17. 【数据结构机试复习2】 赛马 猴子选大王
  18. php获取蓝凑云文件列表,蓝奏云网盘登录获取文件例程
  19. scanf(%*s)
  20. 使用u盘PE系统重装Windows操作系统

热门文章

  1. 二十三种设计模式详解
  2. 链表的基本应用二及总结
  3. 洪水填充算法_Flood Fill (洪水填充、泛洪填充、油漆桶)算法Java循环实现(BFS方式,非递归)...
  4. DOM中对表格的操作
  5. etcd官方推荐的硬件配置
  6. 阿里安全十余年发展的关键词:敬畏、努力
  7. topcoder srm 698 div1 -3
  8. Oracle中的不等于号
  9. selenium call javascript function
  10. gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器