android - Volley 发送数据时改变的数据类型
问题描述
我使用下面的代码将 Volley 中的数据发送到 PHP 服务器(我使用 slim 框架):
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":[]}
但在服务器中接收为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;
}
推荐阅读
- c - 无法弄清楚我在使用数组时做错了什么——警告我是新手并且正在学习
- c++ - C++ 类继承和成员函数
- python - 熊猫 to_mardown() 突出显示行
- python - Python Pygame 中的输入
- relationship - 创建跨多个表的关系,每个日期只允许一个条目
- c++ - 在 C++ 中创建一个链表(结构数组不起作用)
- vue.js - Vue Router - 如何在路由之间传递查询参数
- flutter - 我将如何在 Flutter 中制作宾果卡?
- java - 为什么默认是'int',而不是'byte'?
- null - eventReceive:在每周日历上删除事件结束时返回 null