其他分享
首页 > 其他分享> > Android Http post 请求传递json 内包含数组 给服务器的实现方式

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