Android Volley BasicNetwork.performRequest:URL的意外响应代码400 [英] Android Volley BasicNetwork.performRequest: Unexpected response code 400 for URL

查看:101
本文介绍了Android Volley BasicNetwork.performRequest:URL的意外响应代码400的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Android中使用Volley调用网络服务.我的日志中有以下错误

I call a webservice using Volley in android. I have the following error in the log

D/libc-netbsd: [getaddrinfo]: hostname=192.168.66.86; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd: [getaddrinfo]: hostname=192.168.66.86; servname=(null); cache_mode=(null), netid=0; mark=0
D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
I/System.out: [CDS]rx timeout:2500
I/System.out: [socket][2] connection /123.231.66.86:8080;LocalPort=56586(2500)
I/System.out: [CDS]connect[/192.168.66.86:8080] tm:2
I/System.out: [socket][/192.168.8.104:56586] connected
I/System.out: [OkHttp] sendRequest>>
I/System.out: OkBuffer write source.head == null !
I/System.out: [OkHttp] sendRequest<<
I/System.out: Close in OkHttp:0
I/System.out: [CDS]close[56586]
E/Volley: [2259] BasicNetwork.performRequest: Unexpected response code 400 for http://192.168.66.86:8080/jlrloyalty/rest/usr/login
D/Volley: [1] 2.onErrorResponse: JsonRequestActivity

我的代码就是这样

private void makeJsonObjReq() {
        showProgressDialog();
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
                Const.URL_STRING_REQ, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        msgResponse.setText(response.toString());
                        hideProgressDialog();
                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                hideProgressDialog();
            }
        }) {

            /**
             * Passing some request headers
             * */
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Type", "application/json");
                return headers;
            }

            @Override
            public byte[] getBody() {
                return super.getBody();
            }

            @Override
            protected Map<String, String> getParams() {
                Gson gson = new Gson();
                LoginAccount loginAccount = new LoginAccount();

                HTTPWebServiceRequest httpWebServiceRequest = new HTTPWebServiceRequest();
                loginAccount.setUsername("neshan");
                loginAccount.setPassword("123456");
                httpWebServiceRequest.setRequestObject(loginAccount);
                String jsonParam = gson.toJson(loginAccount);

                Map<String, String> params = new HashMap<String, String>();
                params.put("requestObject", jsonParam);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(jsonObjReq,
                tag_json_obj);

但是当我使用以下参数从Postman调用此网址时,它会起作用.

But when I call this url from Postman with following parameters it works.

{"requestObject":{"password":"123456","username":"neshan","loginId":0}}

当我调试代码时,两个请求参数都相同.内容类型为application/json.但是,这是怎么回事?有任何线索吗?

when I debug the code both the request params are same. The content type is application/json. But what going on here? Any clue?

推荐答案

在排球比赛中,您拥有独立的成功和错误侦听器,处理错误侦听器块中的所有错误.

In volley you have separate success and error listeners, handle all the errors in the error listener block.

显示一个警报或大约一个警报,您可以在其中为用户显示适当的消息,以便通知他有错误,并且需要重试.

Display a alert or so in which you can show a proper message for user, so that he gets notified that there was an error and he needs to try again.

否则,如果您出于特定原因使用自定义错误代码,则可以通过创建实现截距的Response.ErrorListener的自己的错误侦听器来全局处理该错误代码.

Or else if you are using custom error code for specific reason you can handle that globally by creating your own error listeners which implements volley's Response.ErrorListener.

Google广义上的排球错误处理",您将获得一些参考.

Google "volley error handling generalized" you will get some references.

这篇关于Android Volley BasicNetwork.performRequest:URL的意外响应代码400的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆