Volley中的POST请求(使用JSON代替String)

时间:2018-10-13 10:59:26

标签: android json android-studio post android-volley

我正在开发一个应用程序,可以在其中找到汽车的起点和终点,并将其发送到服务器。

我知道如何使用凌空来发送字符串,但是我发现很难以JSON格式发送数据。

部分代码如下:

b

tnFindPath.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RequestQueue queue = Volley.newRequestQueue(MapsActivity.this);

                String url = "http://192.168.43.162:8080/";

                // Request a string response from the provided URL.
                StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {

                            }
                        }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                }) {
                    //adding parameters to the request
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String, String> params = new HashMap<>();
                        params.put("origin", etOrigin.getText().toString());
                        params.put("destination", etDestination.getText().toString());
                        return params;
                    }
                };
                // Add the request to the RequestQueue.
                queue.add(stringRequest);

1 个答案:

答案 0 :(得分:0)

尝试

 final String httpUrl = //your url
    try {
        JSONArray parameters = new JSONArray();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put(Key,value);
        jsonObject.put(Key,value);
        parameters.put(jsonObject);
        Log.i(TAG,parameters.toString());

        JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.POST, httpUrl, parametersForPhp,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG,response.toString());
                        try {
                            //your code
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
        RequestQueueSingleton.getInstance(getApplicationContext()).addToRequestQueue(arrayRequest);
    }catch (Exception e){
        e.printStackTrace();
    }
    }