凌空归来403错误

时间:2017-02-15 05:21:17

标签: android android-volley

enter image description here enter image description here从我试图解决这个问题的两天开始,但我仍然没有任何结果,为什么每次凌空都会给我403错误。我哪里错了?我使用邮递员检查相同的webservice,它返回成功结果。但同样的事情,当我在Android中通过volley或httpurlconnection使用获得403 error.kindly帮助我找到我的错误。

这是我试过的代码:

  StringRequest jsonObjectRequest = new StringRequest(Request.Method.POST, Constant.posturl, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                      String result=response;
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        NetworkResponse response = error.networkResponse;
                        int status = response.statusCode;

                    }
                }) {
                    @Override
                    public Map<String, String> getHeaders() {
                        try {
                              headers = new HashMap<String, String>();
                              headers.put("Content-Type", "application/json");
                              String credentials = Constant.USERNAME + ":" + Constant.PASSWORD;
                              String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);
                              headers.put("Authorization", auth);
                              return headers;
                        } catch (Exception e) {
                            e.printStackTrace();
                             return headers;
                        }
                    }
                    @Override
                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("title", heading_edit_text.getText().toString());
                        params.put("content", body_edit_text.getText().toString());
                        params.put("Slug", heading_edit_text.getText().toString());
                        params.put("date", currentDate);
                        return params;
                    }
                };
                jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(50000, 3, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
                requestQueue.add(jsonObjectRequest);

2 个答案:

答案 0 :(得分:0)

Volley确实提供了适当的请求,称为JsonObjectRequest

 String webAddress = "url here";
 RequestQueue queue = Volley.newRequestQueue(this); // singletone here

 JSONObject object = new JSONObject();
 try {
     object.put("title", heading_edit_text.getText().toString());
     object.put("content", body_edit_text.getText().toString());
     object.put("Slug", heading_edit_text.getText().toString());
     object.put("date", currentDate);
 } catch (JSONException e) {
 }

 JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, webAddress,object, new Response.Listener<JSONObject>() {

     @Override
     public void onResponse(JSONObject object) {
         Log.d("RESPONSE", object.toString());
     }

 }, new Response.ErrorListener() {

     @Override
     public void onErrorResponse(VolleyError volleyError) {
         Log.d("RESPONSE", "That didn't work!");
     }

 }) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> header = new HashMap<>();
                // content type is not needed here
                header.put("Authorization", "value here");
                return header;
            }

  };
 queue.add(request); 

答案 1 :(得分:0)

我在新闻API中也遇到了这个问题。但是当我使用Retrfit时,它的工作就像一种魅力。