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 不需要註解是呢麼的 且和註解不共存