[Android Studio] Volley GET方法返回400错误。邮递员可以工作

时间:2019-03-06 01:38:48

标签: java android android-volley

我正在尝试使用参数将jsonrequest发送到我的项目服务器,并希望获取jsonObject作为响应。下面是我的代码。

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, Const.URL_SERVER_STOCK, null
            , new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            System.out.println("Response is: "+response.toString());
            test.setText(response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG,"Error: " + error
                    + "\nStatus Code " + error.networkResponse.statusCode
                    + "\nResponse Data " + error.networkResponse.data.toString()
                    + "\nCause " + error.getCause()
                    + "\nmessage" + error.getMessage());
        }
    }){
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> header = new LinkedHashMap<String, String>();
            header.put("Content-Type", "text/plain;charset=UTF-8");
            return super.getHeaders();
        }
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> params = new HashMap<String, String>();
            params.put("stockId", String.valueOf(id));
            return params;
        }
    };
    AppController.getInstance().addToRequestQueue(jsonObjectRequest);

下面是我得到的:

I/System.out: id passing: 2
E/Volley: [3415] BasicNetwork.performRequest: Unexpected response code 400 for http://cs309-jr-4.misc.iastate.edu:8080/stock
D/str_log_req: Error: com.android.volley.ClientError
    Status Code 400
    Response Data [B@e14f879
    Cause null
    messagenull

以下是我的邮递员结果: enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

Volley getParam()可以用于POST方法而不是GET方法。请按照以下教程获取详细信息:https://www.itsalif.info/content/android-volley-tutorial-http-get-post-put

答案 1 :(得分:0)

由于这是GET,因此您应该在网址中包含参数

Const.URL_SERVER_STOCK + "?stockId=" + selectedId;