【问题标题】:Volley error bad url null and BasicNetwork.performRequest: Unexpected response code 405Volley error bad url null 和 BasicNetwork.performRequest: Unexpected response code 405
【发布时间】:2018-03-07 05:43:06
【问题描述】:

您好,我正在尝试使用 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

非常感谢任何帮助。

【问题讨论】:

标签: android get android-volley


【解决方案1】:

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

“405 Method Not Allowed 是一个 HTTP 响应状态码,表明指定的请求 HTTP 方法已被服务器接收并识别,但服务器拒绝了请求资源的特定方法。”

【讨论】:

    【解决方案2】:

    问题出在客户端。问题是请求默认设置为 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();
                            }
                        });
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2022-10-05
      • 1970-01-01
      相关资源
      最近更新 更多