Тип данных изменен при отправке данных по Volley - PullRequest
0 голосов
/ 24 ноября 2018

Я использую приведенный ниже код для отправки данных в Volley на PHP-сервер (я использую slim framework):

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 или пытаюсь закодировать данные в php на сервере.но проблема не решена.Как я могу решить это?

1 Ответ

0 голосов
/ 28 ноября 2018

Я использую только

@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;
}
...