2017-02-15 9 views
0

enter image description hereenter image description here Von zwei Tagen versuche ich, dieses Problem zu lösen, aber immer noch habe ich kein Ergebnis, warum jedes Mal volley mir 403 Fehler zurückgibt. wo ich falsch liege? Ich benutze den Postboten, um den gleichen Webservice zu prüfen, es gibt das Erfolgsergebnis zurück. Aber die gleiche Sache, wenn ich in Android über volley oder httpurlconnection 403 error error.kindly benutze, um meinen Fehler zu finden.Volley Return 403 Fehler

Dies ist mein Code, die ich versucht habe:

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

403 wäre verboten. Kannst du hier deine Postman-Anfrage kopieren (redigiere alles, was privat sein soll!). Sie können, in Briefträger klicken Sie auf den Code-Link und kopieren Sie HTTP ... –

+0

@Redman mein Benutzername und Passwort ist richtig, weil ich benutze gleichen Benutzernamen und Passwort im Postboten auch. Postman gibt Erfolgsergebnis zurück. – Rims

+0

Sie sollten überprüfen, ob das base64-codierte Token für Ihre Postman-Anfrage und App-Anfrage übereinstimmt. – akash93

Antwort

0

Volley eine für diese Anfragen beantworten bietet, die JsonObjectRequest genannt wird.

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

sehr schlechte Idee !!! – Rims

+0

@ReemaSingh warum hast du so gesagt? – Enzokie