Spring MVC 註解@ResponseBody或流獲取http請求body的json字符串

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_35180232/article/details/78053057

1.除了Spring必需要的包以及支持spring註解外    jackson-annotations-2.6.0-xh.jar  jackson-core-2.6.0-xh.jar   jackson-databind-2.6.0-xh.jar jackson-mapper-asl-1.8.5.jar   jackson-jr-all-2.4.3-xh.jar


注意有些jar包版本必須要一樣  我就是遇到版本不匹配用的jackson-databind-2.7.0.jar    其他的一樣 就一直報錯


2.請求必須嚴格控制 Content-Typeapplication/json 這個不設置好會很難受 找不到錯誤原因


我使用的是postman測試工具  只是方便測試  你也可以在自己的頁面調用 但是要數據格式爲json

  

在body定義要傳到後臺的json數據


點擊sending後 Eclipse debug發現請求到後臺

1.方法體直接獲取Json數據  Signjson  當然要在方法內添加註解  其中signRequest爲獲取請求的herder的Authorization值 可以用於驗證




最後得到請求的數據json格式封裝包含在HTTP消息體的數據了

json參數:{"id":1,"name":"baba市","code":"131081000000","parentId":0,"level":1,"action":1}

獲取簽名:7ce2cb2af9198a76d395774a54b4bc70c5610320

完成了  


@RequestMapping  返回值通常解析爲跳轉路徑

@Responsebody  返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP 響應正文中。例如,異步獲取 json 數據,加上 @Responsebody 註解後,就會直接返回 json 數據。

@RequestBody 註解則是將 HTTP 請求正文插入方法中,直接獲取請求消息體的json內容



二、由於有時候簽名驗證需要將獲取的Json放入算法生成簽名,但經過測試發現,當請求的某一參數爲“money”:“0.000”時候,獲取的Json爲“money”:“0” 雖然數值上不發生變化,但是轉爲Json它會自動缺省小數點後的0  測試 當參數爲0.001 不變化 所以可能是Json在不影響參數值精度下慧缺省 這時候簽名就會與請求方生成的簽名不一致,處理方法是:

    使用流留獲取參數: 代碼如下

         BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF8"));
        StringBuffer buff=new StringBuffer();
        String line="";
        while ((line = reader.readLine()) != null) {
            buff.append(line);
        }
        String SignRequestString = buff.toString();

        SignRequestString 就是請求過來的參數,拿去做簽名生成  OK 不需要註解是呢麼的 且和註解不共存



      





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章