Volley发送数据时更改的数据类型



我使用以下代码将Volley中的数据发送到PHP服务器(我使用瘦框架(:

StringRequest strRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jObjResult = new JSONObject(response);
if (jObjResult.getBoolean("success")) {
flag = true;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
flag = false;
}
}) {
@Override
protected Map<String, String> getParams() {
String json = jObj.toString();
Map<String, String> params = new HashMap<>();
params.put("values", jObj.toString());
return params;
}
@Override
public Map getHeaders() throws AuthFailureError {
super.getHeaders();
HashMap headers = new HashMap();
headers.put("Content-Type", "application/json");
return headers;
}
};
getInstance(context).addToRequestQueue(strRequest, "VolleyRequest");

数据以{"gcms":[],"gcm":[],"gc":[]}的形式发送true,但在服务器中以values=%7B%22gcms%22%3A%5B%5D%2C%22gcm%22%3A%5B%5D%2C%22gc%22%3A%5B%5D%7D&的形式接收。我测试了一些工作,比如在android中为请求设置Header,或者尝试在服务器中用php编码数据。但问题尚未解决。我该如何解决这个问题?

我只使用

@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
String json = jObj.toString();
params.put("values", json);
return params;
}

而不是

@Override
protected Map<String, String> getParams() {
String json = jObj.toString();
Map<String, String> params = new HashMap<>();
params.put("values", jObj.toString());
return params;
}

相关内容

最新更新