【发布时间】:2015-09-17 16:44:47
【问题描述】:
我的 Node.js 服务器从 MongoDB 发送一个由 JSON 文档组成的数组,但我的 Android 应用程序不会下载它。我使用response.send(placearray);. 发送它但是,如果我发送像Request received 这样的纯字符串,它可以完美运行。
我使用 POST 请求发送器来测试服务器,它可以正常接收数组,但 Volley 不会。
我了解我以字符串形式接收它的事实可能会导致此问题,但我不知道该怎么做。
这是我使用的程序:
StringRequest PlaceRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
DisplayHotels(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
protected Map<String, String> getParams() {
Map<String, String> PlaceMap = new HashMap<>();
PlaceMap.put("Test", "Test");
return PlaceMap;
}
};
PlaceQueue.add(PlaceRequest);
按照 Fakher 的建议,我刚刚尝试过,但仍然无法正常工作:
JsonArrayRequest PlaceArrayRequest = new JsonArrayRequest(Request.Method.POST, url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
ArrayList MArrList = new ArrayList();
//MArrList.add(response);
DisplayHotels(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Context context = getApplicationContext();
Toast VerrorToast = Toast.makeText(context, error.toString(), Toast.LENGTH_LONG);
}
}) {
protected Map<String, String> getParams() {
Map<String, String> PMap = new HashMap<>();
PMap.put("Hotels", "All");
return PMap;
}
};
它现在接收到 JSONArray,但它不会解析它,这是我尝试过的代码:
RequestQueue PlaceQueue = Volley.newRequestQueue(this);
JsonArrayRequest PlaceArrayRequest = new JsonArrayRequest(Request.Method.POST, url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
int i;
ArrayList<String> MArrList = new ArrayList<>();
for (i = 0; i < response.length(); i++) {
try {
JSONArray ConvertedJarray = response.getJSONArray(i);
JSONObject PlaceParser = ConvertedJarray.getJSONObject(i);
MArrList.add(PlaceParser.get("PlaceName").toString());
MArrList.add(response.get(i).toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
我收到此错误:org.json.JSONException: Value {"_id":"55f97b849b8385cd03730b09","PlaceName":"W South Beach","PlaceType":"Hotel","PlaceAddress":"2201 Collins Avenue ,迈阿密海滩,佛罗里达州,美国。邮政编码:33139。","PlaceCity":"Miami","EstimatedPrice":"2023","OtherDetails":"Cool Corner Suite。\n全景海景。\nVIP 设施。 \n房间大小:1,350 平方英尺(125 平方米)。\n禁止吸烟。\n"} at 108 类型的 java.lang.String 无法转换为 JSONArray
感谢您的宝贵时间。
【问题讨论】:
-
您正在描述问题,但如果您将完整的 volley 代码也放入 Q 中,它将加快解决速度。 (onResponce) 只是 volley 的一部分
-
你应该重写 getBody() 而不是 getParams()
标签: android json node.js mongodb android-volley