zoukankan      html  css  js  c++  java
  • 对接第三方支付接口-获取http中的返回参数

    这几天对接第三方支付接口,在回调通知里获取返回参数,有一家返回的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一下。

  • 相关阅读:
    P4932 浏览器 题解
    P1627 [CQOI2009]中位数 题解
    P4626 一道水题 II 题解
    P1439 【模板】最长公共子序列 题解
    P2324 [SCOI2005]骑士精神 题解
    P1784 数独 题解
    浅谈 Dancing Links X 算法
    P5905 【模板】Johnson 全源最短路 题解
    线性预处理阶乘,逆元和组合数
    需要支持多种操作的线段树该如何确定运算顺序?
  • 原文地址:https://www.cnblogs.com/mark8080/p/6235908.html
Copyright © 2011-2022 走看看