Volley错误坏url null和BasicNetwork.performRequest:意外的响应代码405

时间:2018-03-07 05:43:07

标签: android get android-volley

您好我正在尝试使用get方法获取来自Web API的数据。但我一直在收到这些错误。

    StringRequest stringRequest = new StringRequest(Request.Method.GET, uri, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {


            Log.i("response", response);

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

            Log.i("error", error.toString());
        }
    });



  AppController.getInstance().addToRequestQueue(stringRequest);

错误:

pp E/Volley: [132] NetworkDispatcher.run: Unhandled exception java.lang.RuntimeException: Bad URL null
                                                                           java.lang.RuntimeException: Bad URL null

p E/Volley: [131] BasicNetwork.performRequest: Unexpected response code 405

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您收到“意外的响应代码405”,因此它与服务器响应有关。

“不允许405方法”是一个HTTP响应状态代码,指示服务器已接收并识别指定的请求HTTP方法,但服务器已拒绝该请求资源的特定方法。“

答案 1 :(得分:0)

问题出在客户端。问题是默认情况下请求设置为POST。使用以下2种方法之一。两者都适合我。

public void getJsonData(){
        JsonObjectRequest jsonReq = new JsonObjectRequest
                (Request.Method.GET, URL_FEED, null, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("response", response);
                    }
                },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Log.d("Server", "onErrorResponse");
                            }
                        });
        NetworkController.getInstance().addToRequestQueue(jsonReq);}

第二种方法

public void getJsonData() {
                    final String URL = "URL";
                    StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
                            new Response.Listener<String>() {
                                @Override
                                public void onResponse(String response) {
                                    Log.i("response", response);
                                }
                            },
                            new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                    Log.i("error", error.toString());
                                }
                            }) {};
                    final RequestQueue requestQueue = Volley.newRequestQueue(this);
                    requestQueue.add(stringRequest);
                    requestQueue.addRequestFinishedListener(new RequestQueue.RequestFinishedListener<Object>() {
                        @Override
                        public void onRequestFinished(Request<Object> request) {
                            requestQueue.getCache().clear();
                        }
                    });
                }