Android Http post 请求传递json 内包含数组 给服务器的实现方式
作者:互联网
最近项目中需要传递一个带数组的json数据给后台需求:
格式如下:
{
"orderType": "TX",
"truckNo": "YCSCR38913",
"pointNo": "6",
"cntNum": 1,
"transactList": [{
"orderNo": "202202070014",
"eirId": "5516985855147",
"cntNo": "23525635555",
"shipSeal": "",
"customSeal": ""
}]
}
以前我的post请求方式,都是把参数拼接到url后面
那上述这种格式,是否可以采取 以前的方式,进行操作呢?
测试结果是不行的:
以下是针对上面jon正确的请求方式:
String orderNo="";
String eirId="";
String busiType="";
String cntNo="";
RequestParams params=new RequestParams();
addRequestHeader(params);
JSONObject object=new JSONObject();
try {
object.put("orderType", orderType);//上一页传递过来的数据
object.put("truckNo", checkedKey);//本页提取的数据
object.put("pointNo", gateNoStr);//本页提取的数据
object.put("cntNum", size + "");
JSONArray jsonArray=new JSONArray();
for (int i=0; i < checkList.size(); i++) {
BDSuitcaseBean.DataBean.ListBean listBean=checkList.get(i);
orderNo=listBean.getOrderNo();//1.订单号
eirId=listBean.getEirId();//2.订单号
busiType=listBean.getBusiType();//3.箱子类型
cntNo=listBean.getCntNo();//箱号
//8.铅封号,根据箱子类型来判断 提空返重,提重返空,收空,才有铅封号
if (busiType.equals(Constant.TZBD) || busiType.equals(Constant.TZ_FKBD) || busiType.equals(Constant.SKXBD) || busiType.equals(Constant.TkBD)) {//提重,提重返空,提空,收空
shipSeal="";//不用传铅封号
} else if (busiType.equals(Constant.TK_FZBD) || busiType.equals(Constant.TZ_FZBD) || busiType.equals(Constant.SZXBD)) {//提空返重,提重返重,收重Y
shipSeal="Y";
} else {
Logger.e(TAG, "未知箱子类型-------------" + busiType);
}
JSONObject object1=new JSONObject();
object1.put("orderNo", orderNo);
object1.put("eirId", eirId);
object1.put("cntNo", cntNo);
object1.put("shipSeal", shipSeal);
object1.put("customSeal", customSeal);
jsonArray.put(object1);
}
// object.put("transactList", "");
object.accumulate("transactList", jsonArray);
params.setAsJsonContent(true);//支持json
params.setBodyContent(object.toString());
} catch (JSONException e) {
Logger.e(TAG, "e--------" + e);
e.printStackTrace();
}
BaseApplication.getInstance().httpRequest.xPostjson(mContext, params, Constant.BASE_HTTP + ContantUrl.getAppointCarSumit, new RequestResultJsonCallBack() {
@Override
public void onSucess(String result) {
hideProgress();
Logger.e(TAG, "指派车辆---result---" + result);
NewBaseBean info=Constant.getPerson(result, NewBaseBean.class);
if (info.getCode()==Constant.RETURN_SUCCESS__STATE_CODE) {
finish();
} else {
ToastUtil(mContext, info.getMessage());
}
}
@Override
public void onFailure(int errorCode, String errorMsg) {
hideProgress();
Logger.e(TAG, "指派车辆---result---" + errorMsg);
}
});
按照上面的传递方式即可以把一个json 字符串传递给服务端,他们解析出来的也是一个json数据。
标签:Constant,busiType,object,equals,object1,json,put,Http,Android 来源: https://www.cnblogs.com/linjingyg/p/15795042.html