Android截击更改了JsonObjectRequest的响应



我正试图用截击库制作一个标准的JsonObjectRequest。除了请求的响应之外,一切都很好。

以下是我处理请求的方式:

JSONObject jsonObject = new JSONObject();
jsonObject.put("geoLong", location.getLongitude());
jsonObject.put("geoLat", location.getLatitude());
JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url,
jsonObject.toString(), createResponseListener(), createErrorListener()); 
jsonRequest.setRetryPolicy(new DefaultRetryPolicy(15000, 2, 1));
requestQueue.add(jsonRequest);

我期望以下json响应:

{
"total": 79,
"results": [
{
"id": "123",
"title": "test",
"distance": 3873.7552258171,
"address": {
"street": "Street",
"zip": "12345",
"city": "city",
"country": "country",
},
"geo": {
"longitude": x,
"latitude": y
}
}, 
...
...
]}

但从我的Volley请求中,我得到了这样的东西:

{
"nameValuePairs": {
"total": 79,
"results": {
"values": [{
"nameValuePairs": {
"id": 123, 
"title": "test", 
"distance": 3873.7552258171, 
"address": {
"nameValuePairs": {
"street": "street", 
"zip": "zip", 
"city": "city", 
"country": "country"
}
},
"geo": {
"nameValuePairs": {
"longitude": x, 
"latitude": y
}
}
},
... 
...
}]}}

有人知道为什么响应的格式是这样的吗?我该如何将其更改为我期望的格式?

我自己想出来的。我将JSON作为字符串发送到第二个活动,并使用

new Gson().toJson(response)

将JSONObject更改为String,从而更改了JSON格式。我不知道为什么会发生这种事,但这就是问题所在。

试试这个。使用HashMap在Post请求中发送参数

HashMap<String,String> params = new HashMap<>();
params.put("geoLong", location.getLongitude());
params.put("geoLat", location.getLatitude());

然后

JsonObjectRequest jsonRequest = new JsonObjectRequest(url,
new JSONObject(params), createResponseListener(), createErrorListener());

为了更好地理解检查这个代码片段,我在发布请求时使用了这个,并得到了预期的响应。

JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
VolleyLog.v("Response:%n %s", response.toString(4));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
});

相关内容

  • 没有找到相关文章

最新更新