簡體   English   中英

凌空返回403錯誤

[英]Volley return 403 error

在此處輸入圖像描述 在此處輸入圖像描述 從兩天開始,我試圖解決這個問題,但我仍然沒有任何結果,為什么每次截擊都返回我 403 錯誤。 我哪里錯了? 我正在使用郵遞員檢查相同的網絡服務,它返回成功結果。 但是當我在 Android 中通過排球或 httpurlconnection 獲得 403 錯誤時,同樣的事情。請幫助我找到我的錯誤。

這是我試過的代碼:

  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);

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); 

將標題的“Content-Type”更改為“application/form-data”

IE,

headers.put("Content-Type", "application/form-data");

我在 news api 中也遇到了這個問題。 但是當我使用 Retrfit 時,它的工作就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM