標籤:
最近用http+post方式實現了系統間資料互動的需求.常用的方式是 application/json方式直接post json對象如
{"siteId":"ZHAN20160329TDLXJND144649","apiSecret":"userid123","workNumber":"FJ-8006-160912-1715-00001","fluetype":"2","apiKey":"yyxt"}
後台可以直接springmvc直接接收並轉為相關vo對象處理.
而在手機與後台互動的情境中遇到一種格式要求
方法名稱:appScanBuildingData
請求:json字串形式,最外層用data包裹
demo格式範例是
data={"alarmDetail":[{"address":"中國","cgi":"CGI0"},{"address":"米國","cgi":"CGI1"},{"address":"日本","cgi":"CGI2"}],"areaCode":"350723","cellNumber":"1599999","cityCode":"350723","lat":"232.545","lon":"98.233","workNO":"ZB33000333337"}
這種資料需要怎麼產生的?
以下說明主要參考https://imququ.com/post/four-ways-to-post-data-in-http.html
這種奇葩的格式要求其實使用的Content-Type: 應該為application/x-www-form-urlencoded;提交的資料按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼.
POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
當以application/json的content-type傳送資料,被傳送的對象只需被json序列化。當以application/x-www-form-urlencoded的方式傳送資料。請求的內容需要以..=..&..=..的格式提交,在
請求體內內容將會自動以”&”和“ = ”進行拆分。
application/x-www-form-urlencoded方式傳輸,後台接收時候可以採用
String data = request.getParameter("data"); 這樣的方式來接受json格式的資料.然後在轉為Object使用: AlarmInfo vo=null; vo=JSONObject.parseObject(data, AlarmInfo.class);
約定這種格式的初衷估計就是後台為接收資料方便的考慮.
來自為知筆記(Wiz)
web後台與手機互動資料格式問題