android volley响应代码500注册

zxc*_*qqq 1 post android android-volley

我使用齐射库连接到服务器.我有登录和注册方法.它们是相同的但具有不同的参数.登录方式:

    private void login(String url){
    RequestQueue requestQueue = MyVolley.getRequestQueue();

    Map<String, String> params = new HashMap<String, String>();
    params.put("email", "aubree@wisoky.biz");
    params.put("password", "123456789");
    params.put("person", "0");

    JsonObjectRequest jor = new JsonObjectRequest(Request.Method.POST,
            url,
            new JSONObject(params),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    conTV.setText(response.toString());

                    Log.d("Reger", response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    conTV.setText(error.getMessage());
                }
            }){
        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }
    };

    requestQueue.add(jor);
}
Run Code Online (Sandbox Code Playgroud)

和注册方法:

    private void register(String url){

    RequestQueue requestQueue = MyVolley.getRequestQueue();
    Map<String, String> params = new HashMap<String, String>();
    params.put("email", "lork@more.com");
    params.put("password", "123456789");
    params.put("name", "Lurk");
    params.put("surname", "More");
    params.put("person", "0");

    JsonObjectRequest jor = new JsonObjectRequest(Request.Method.POST,
            url,
            new JSONObject(params),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    conTV.setText(response.toString());
                    Log.d("Reger", response.toString());
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    conTV.setText(error.toString());
                }
    }){
        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }
    };

    requestQueue.add(jor);
}
Run Code Online (Sandbox Code Playgroud)

问题是注册方法日志显示如下:

E/Volley:[1608] BasicNetwork.performRequest:http:// server/api/v1/register的意外响应代码500

我不知道为什么?第一种方法工作正确,但第二种不正

Edg*_*olo 6

正如@bharat所说,看起来你的服务器不可用.我会建议你像这样处理这种类型的错误onErrorResponse:

        NetworkResponse networkResponse = error.networkResponse;
        if (networkResponse != null) {
            Log.e("Volley", "Error. HTTP Status Code:"+networkResponse.statusCode);
        }

        if (error instanceof TimeoutError) {
            Log.e("Volley", "TimeoutError");
        }else if(error instanceof NoConnectionError){
            Log.e("Volley", "NoConnectionError");
        } else if (error instanceof AuthFailureError) {
            Log.e("Volley", "AuthFailureError");
        } else if (error instanceof ServerError) {
            Log.e("Volley", "ServerError");
        } else if (error instanceof NetworkError) {
            Log.e("Volley", "NetworkError");
        } else if (error instanceof ParseError) {
            Log.e("Volley", "ParseError");
        }
Run Code Online (Sandbox Code Playgroud)

  • 除了 ServerError 之外,它怎么可能是其他任何东西,因为服务器响应了一个有效的答案(尽管是一个错误)?这不会提供更多信息 (2认同)