首页 > 代码库 > web后台与手机交互数据格式问题

web后台与手机交互数据格式问题

最近用http+post方式实现了系统间数据交互的需求.
常用的方式是 application/json方式直接post json对象
  1. {"siteId":"ZHAN20160329TDLXJND144649","apiSecret":"userid123","workNumber":"FJ-8006-160912-1715-00001","fluetype":"2","apiKey":"yyxt"}
后台可以直接springmvc直接接收并转为相关vo对象处理.

而在手机与后台交互的场景中遇到一种格式要求
  1. 方法名称:appScanBuildingData
  2. 请求:json字符串形式,最外层用data包裹
demo格式范例是
  1. data=http://www.mamicode.com/{"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 转码.
  1. POST http://www.example.com HTTP/1.1
  2. Content-Type: application/x-www-form-urlencoded;charset=utf-8
  3. 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后台与手机交互数据格式问题