【问题标题】:Volley request showing com.android.volley.ServerErrorVolley 请求显示 com.android.volley.ServerError
【发布时间】:2017-09-06 18:45:47
【问题描述】:

显示 com.android.volley.ServerError 的 Volley 请求是否还需要实现 getHeaders() 方法?这个方法的具体用途是什么?

  send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                    (Request.Method.POST, URL, null, new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_LONG).show();
                        }
                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            error.printStackTrace();
                        }
                    }){
                @Override
                protected Map<String,String> getParams(){
                    Map<String,String> params = new HashMap<String, String>();
                    params.put("username","Admin");
                    params.put("password", "123456789");

                    return params;
                }
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("Content-Type", "application/x-www-form-urlencoded");
                    return params;
                }
            };

            RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
            requestQueue.add(jsonObjectRequest);
        }
    });

【问题讨论】:

  • api 在邮递员中工作吗?
  • 是的,它在邮递员中工作
  • 使用StringRequest,为什么->在这里查看:stackoverflow.com/questions/19837820/…
  • 使用 StringRequest 仍然显示同样的错误

标签: android android-volley


【解决方案1】:

通常,当您使用较差的互联网连接或您的服务器出现故障时,会发生这种类型的错误。无需实现 getHeaders() 方法。尝试仅检查您的连接或服务器连接。

使用 android volley 库,

 compile 'com.android.volley:volley:1.0.0'


        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
            url, null,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_LONG).show();
                }
            }, new Response.ErrorListener() {

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

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
             params.put("username","Admin");
             params.put("password", "123456789");
            return params;
        }

    };

     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
     requestQueue.add(jsonObjectRequest);

希望这会对您有所帮助(祝您编程愉快!)。

【讨论】:

  • 网速很高,服务器是我自己的电脑
  • 那你应该试试重试策略jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy( 0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));然后你可以添加requestQueue.add(jsonObjectRequest);
  • 我使用了这个重试策略,但仍然显示同样的错误
  • 什么是变化?
  • Log.d(TAG, "错误:" + error.getMessage());显示为空
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多