我使用此代码将POST数据(一个JSON对象)发送到我的Node / Express.js服务器 . 我使用了body-parser,服务器从StringRequests接收数据没有问题,但是当我发送一个JsonArrayRequest时,console.log(request.body)的输出;是'{}' .
但是,RequestBin收到了POST数据并正确显示了它 .
我尝试使用HashMap将content-type:application / json添加到POST请求的 Headers 中,这是建议给另一个有类似问题的人,但这对我不起作用 . 它仍然没有显示 .
我使用的只是body-parser和带有Node.js 0.12的Express插件 . 有任何想法吗?
public void SearchFor(final String placetype, final String placelocation) throws JSONException {
String url = "http://requestb.in/113ewl01";
JSONObject PlaceObj = new JSONObject();
JSONArray PlJarr = new JSONArray();
PlaceObj.put("PlaceType", placetype);
PlaceObj.put("PlaceLocation", placelocation);
//PlJarr.put(PlaceObj);
RequestQueue PlaceQueue = Volley.newRequestQueue(this);
JsonArrayRequest PlaceArrayRequest = new JsonArrayRequest(Request.Method.POST, url, PlJarr, new Response.Listener() {
@Override
public void onResponse(JSONArray response) {
int i;
ArrayList MArrList = new ArrayList<>();
ArrayList PlaceList = new ArrayList<>();
for (i = 0; i < response.length(); i++) {
try {
MArrList.add(response.get(i).toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONObject PlaceParser = null;
try {
for (i = 0; i < response.length(); i++) {
PlaceParser = new JSONObject(MArrList.get(i));
PlaceList.add(PlaceParser.get("PlaceName").toString() + "\n" + "Estimated Price: $" + PlaceParser.get("EstimatedPrice").toString() + ".\n" + PlaceParser.get("PlaceAddress").toString() + "\n" + PlaceParser.get("OtherDetails").toString());
hybridlist[i] = "$" + PlaceParser.get("EstimatedPrice").toString() + " - " + PlaceParser.get("PlaceName").toString();
}
} catch (JSONException e) {
e.printStackTrace();
}
DisplayHotels(PlaceList);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Context context = getApplicationContext();
Toast VerrorToast = Toast.makeText(context, "Connection failed.", Toast.LENGTH_LONG);
VerrorToast.show();
}
}) {
@Override
public Map getHeaders() throws AuthFailureError {
HashMap HeadMap = new HashMap();
HeadMap.put("Content-Type", "application/json");
HeadMap.put("charset", "utf-8");
return HeadMap;
}
};
PlaceQueue.add(PlaceArrayRequest);
}
但是,RequestBin网址现在已经过期了 .
谢谢 .
编辑 - 我更新了上面的代码 . 我只是将我的JSONObject放入JSONArray并改为发送JSONArray,并使用HashMap添加 Headers ,但服务器打印相同的“{}” .
以下是RequestBin从应用程序收到的截图: