这几天对接第三方支付接口,在回调通知里获取返回参数,有一家返回的json格式,请求参数可以从标准输入流中获取。

    //1.解析参数 , 读取请求内容
BufferedReader br;
String line = null;
StringBuilder sb = new StringBuilder();
try {
br = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
while((line = br.readLine())!=null){
sb.append(line);
}
} catch (IOException e1) {
e1.printStackTrace();
} String params = sb.toString(); //2.转成json
JSONObject jsonParams = JSONObject.fromObject(params);

以上是返回json格式。

如果返回K=V&...这种格式,即可直接从request中获取,具体做法为request.getParameter("keyName");这里有个问题,如果以K=V&...这种形式,则不要以读标准流的方式获取参数,这样会导致下面在request.getParameter中获取不到值,而且读出来也不是json格式。

即在使用HTTP协议实现应用间接口通信时,服务端读取客户端请求过来的数据,会用到request.getInputStream(),第一次读取的时候可以读取到数据,但是接下来的读取操作都读取不到数据。

原因是:

InputStream并没有实现reset方法(可以重置首次读取的位置),无法实现重置操作;

一个InputStream对象在被读取完成后,将无法被再次读取,始终返回-1。

解决方案可以让inputStream.reset一下。

对接第三方支付接口-获取http中的返回参数的更多相关文章

  1. 获取request中的查询参数

    //获取request中的查询参数 public static Map<String, Object> getRequestParamsByMap(HttpServletRequest r ...

  2. 获取url中查询字符串参数

    // 获取url中查询字符串参数 例如http://www.test.com?a=1&b=2 function RequestParamete() { var url = window.loc ...

  3. springboot的restful风格获取请求中携带的参数

    http://localhost:8080/emp/1 有以上请求,我们controller要怎么获取请求中传递的参数1呢? 通过PathVariable注解,如下: @DeleteMapping(& ...

  4. Django中对接第三方支付(支付宝)实现支付的流程

    1. 业务逻辑准备 1. 使用沙箱提供的商家环境 沙箱环境:是支付宝提供给开发者的模拟支付的环境 沙箱应用:https://docs.open.alipay.com/200/105311 沙箱账号:h ...

  5. Thinkcmf对接支付宝支付和获取用户信息

    一.         登录支付宝开放平台 平台地址:https://open.alipay.com/ 二.         创建应用并申请上线 登录后,[进入我的开放平台],依次点击[开发者中心]-& ...

  6. 翻页bug 在接口文档中应规范参数的取值区间 接口规范

    <?php$a=array("red","green","blue","yellow","brown&q ...

  7. 翻页bug 在接口文档中应规范参数的取值区间

    <?php$a=array("red","green","blue","yellow","brown&q ...

  8. 通过反射获取父类中的泛型参数对应的Class对象

    假设有两个类:Dao 和 PersonDao,它们的代码如下: Dao: public class Dao<T> { private Class<T> clazz; T get ...

  9. JS获取Url中传入的参数

    一:后台获取,前台调用 后台: object value= Request.QueryString[key]; 前台js: $(function(){ var value="<%=va ...

随机推荐

  1. spark streaming 接收 kafka 数据java代码WordCount示例

    http://www.cnblogs.com/gaopeng527/p/4959633.html

  2. UI设计

    微软压平的瓷砖设计符合最直接的信息接受方式,但不符合人类的审美观念. 换句话说,除了平,还有艺术,人类的脑力活动从不会平的像个白板,它是九曲十八弯的脉冲波动. 人类几千年的的审美史上,从没有出现过这种 ...

  3. PHP学习-链接数据库

    链接数据库文件:conn.php <?php $conn = mysql_connect("localhost:3306","root","us ...

  4. VS2013 预定义的宏

    Visual Studio 2013 预定义的宏 https://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.120).aspx 列出预定义的 ANS ...

  5. connect 链接失败: 查找不到 signal

                提示错误是:   signal_index < 0 ;;     ----  故 connect返回false;              消除  connect  信号 ...

  6. poj1988_Cube Stacking

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 24130   Accepted: 8468 Ca ...

  7. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

  8. Odoo9是如何计算预定交付日期的

    计算预定日期目的是按计划交付.接收等.根据不同公司习惯,Odoo会通过调度器自动生成预定日期,Odoo调度器计算每一行的每件事情,无论是生产订单.交货单.销售订单等,依据Odoo中配置的不同交付时间( ...

  9. Android笔记:反向横屏

    1: 在manifest文件中更改android:screenOrientation="landscape"为“reverseLandscape” 2: 更改Android源码 3 ...

  10. Pyqt show和exec的区别

    Pyqt中 QDialog  show和exec的区别 QDialog的显示有两个函数show()和exec().他们的区别在参考文档上的解释如下: show():显示一个非模式对话框.控制权即刻返回 ...