我正在使用android volley发送请求到服务器端,另一方面在服务器端我使用php。 这是我的android代码从服务器接收响应(无论params是什么,因为我在服务器端不需要params!):
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Log.d("ATA d Response", response.toString());
VolleyLog.v("ATA Response:%n %s", response.toString(4));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ATA Response", " RESPONSE ERROR");
VolleyLog.e("Error: ", error.getMessage());
}
});
req.setShouldCache(false);
queue.getCache().clear();
queue.add(req);
现在,当在服务器端我回复时会出现如下响应:
if( isset($_POST)) {
echo json_encode(array("x"=>"y", "m"=>"n"));
exit();
}
每一个都没问题,响应就是服务器发送的内容!
但是!当在服务器端时,我返回作为这样的响应:
if( isset($_POST)) {
echo json_encode(array(array("0"=>"1"),array("2"=>"3"),array("4"=>"5")));
exit();
}
响应不正常并收到此错误:
06-17 02:28:53.456 D/Volley: [1296] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] MY_URL 0xa64d9c1b NORMAL 1> [lifetime=3645], [size=60], [rc=200], [retryCount=0]
06-17 02:28:53.466 D/ATA Response: RESPONSE ERROR
06-17 02:28:53.466 E/Volley: [1] 2.onErrorResponse: Error:
我的代码出了什么问题?
答案 0 :(得分:0)
尝试发送内容类型标头。 application/json
应该完成这项工作。
header("Content-type:application/json");
在产生任何输出之前发送标题(即在echo
语句之前)。