糟糕的请求Android改造发送jsonArray

时间:2018-01-22 13:16:53

标签: android arrays retrofit

我尝试与需要接收json数组的服务进行通信,如下所示:

[{
"PAR_IND_COD_AREA_PROC": "1",
"PAR_COD_AREA_PROC": "H",
"PAR_IND_EQPMT_DESTINO": "0",
"PAR_EQPMT_DESTINO": "",
"PAR_IND_COD_EQPMT_PRODC": "1",
"PAR_COD_EQPMT_PRODC": "DBQ",
"PAR_IDENT_UNMET": "",
"PAR_COD_TIPO_ACO": "",
"PAR_COD_GRUPO_ACO": "",
"PAR_DTH_INI_PRAZO": "",
"PAR_DTH_FIM_PRAZO": "",
"PAR_COD_INTER_PEDCL": "",
"PAR_COD_ITEM_PEDCL": "",
"PAR_COD_CLIENTE": "",
"PAR_NUM_CAMPA_RB": "",
"PAR_UM_PROXI": ""
}, true]

为此,我使用以下方法进行改造:

@POST(Constants.MOVIMENTAR_BUSCA)
Call<RetornoCompletoBuscaUmsMovimentar> getBuscaMovimentarUms(@Body JSONStringer data);

我正在使用的okHttpLogger告诉我,我发送给服务器的是:

D/OkHttp: {"out":"[{\"PAR_IND_COD_AREA_PROC\":\"1\",\"PAR_COD_AREA_PROC\":\"H\",\"PAR_IND_EQPMT_DESTINO\":\"0\",\"PAR_EQPMT_DESTINO\":\"\",\"PAR_IND_COD_EQPMT_PRODC\":\"1\",\"PAR_COD_EQPMT_PRODC\":\"DBQ\",\"PAR_IDENT_UNMET\":\"\",\"PAR_COD_TIPO_ACO\":\"\",\"PAR_COD_GRUPO_ACO\":\"\",\"PAR_DTH_INI_PRAZO\":\"\",\"PAR_DTH_FIM_PRAZO\":\"\",\"PAR_COD_INTER_PEDCL\":\"\",\"PAR_COD_ITEM_PEDCL\":\"\",\"PAR_COD_CLIENTE\":\"\",\"PAR_NUM_CAMPA_RB\":\"\",\"PAR_UM_PROXI\":\"\"},true]","stack":[]}

jsonStringer的构建方式如下:

private JSONStringer jsonStringToSend(String PAR_IND_COD_AREA_PROC,
String PAR_COD_AREA_PROC, String PAR_IND_EQPMT_DESTINO,
String PAR_EQPMT_DESTINO, String PAR_IND_COD_EQPMT_PRODC,
String PAR_COD_EQPMT_PRODC, String PAR_IDENT_UNMET,
String PAR_COD_TIPO_ACO, String PAR_COD_GRUPO_ACO,
String PAR_DTH_INI_PRAZO, String PAR_DTH_FIM_PRAZO,
String PAR_COD_INTER_PEDCL, String PAR_COD_ITEM_PEDCL,
String PAR_COD_CLIENTE, String PAR_NUM_CAMPA_RB,
String PAR_UM_PROXI){
try {
return new JSONStringer().array()
.object().key("PAR_IND_COD_AREA_PROC").value(PAR_IND_COD_AREA_PROC)
.key("PAR_COD_AREA_PROC").value(PAR_COD_AREA_PROC)
.key("PAR_IND_EQPMT_DESTINO").value(PAR_IND_EQPMT_DESTINO)
.key("PAR_EQPMT_DESTINO").value(PAR_EQPMT_DESTINO)
.key("PAR_IND_COD_EQPMT_PRODC").value(PAR_IND_COD_EQPMT_PRODC)
.key("PAR_COD_EQPMT_PRODC").value(PAR_COD_EQPMT_PRODC)
.key("PAR_IDENT_UNMET").value(PAR_IDENT_UNMET)
.key("PAR_COD_TIPO_ACO").value(PAR_COD_TIPO_ACO)
.key("PAR_COD_GRUPO_ACO").value(PAR_COD_GRUPO_ACO)
.key("PAR_DTH_INI_PRAZO").value(PAR_DTH_INI_PRAZO)
.key("PAR_DTH_FIM_PRAZO").value(PAR_DTH_FIM_PRAZO)
.key("PAR_COD_INTER_PEDCL").value(PAR_COD_INTER_PEDCL)
.key("PAR_COD_ITEM_PEDCL").value(PAR_COD_ITEM_PEDCL)
.key("PAR_COD_CLIENTE").value(PAR_COD_CLIENTE)
.key("PAR_NUM_CAMPA_RB").value(PAR_NUM_CAMPA_RB)
.key("PAR_UM_PROXI").value(PAR_UM_PROXI).endObject()
.value(true).endArray();
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}

我做错了什么?我很久以来一直在为JSONObjects POST使用改造,但似乎无法用JSONArray来解决这个特殊情况

提前致谢。

1 个答案:

答案 0 :(得分:0)

经过一整天的研究,我发现这个answer在葡萄牙语版本的stackoverflow上解决了我的问题。不需要翻译,代码是自我解释的!