對接第三方支付接口-獲取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一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM