2017-02-15 8 views
0

enter image description hereenter image description here私はこの問題を解決しようとしていますが、まだ何も結果がありません。どこが間違っていますか?私は同じWebサービスをチェックするために郵便配達員を使用しています、それは成功の結果を返します。しかし、同じことを私がAndroidでバレーまたはhttpurlconnection経由で403エラーを取得しているときに。私のエラーを見つけるのを助ける。Volley return 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); 
+0

403禁止されるでしょう。郵便配達人のリクエストをここにコピーすることができますか?あなたは郵便配達員でコードリンクをクリックしてHTTPをコピーできます。 –

+0

@Redman私は郵便配達員にも同じユーザ名とパスワードを使用しているので、私のユーザ名とパスワードは正しいです.Postmanは成功の結果を返します。 – Rims

+0

base64でエンコードされたトークンが郵便配達人のリクエストとアプリのリクエストと一致するかどうかを確認する必要があります – akash93

答えて

0

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

非常に悪い考え!!! – Rims

+0

@ ReemaSinghなぜそう言ったのですか? – Enzokie