2016-07-03 10 views
1

ここでは、私がDjango Rest FrameworkベースのAPIにPostmanを通じて行う簡単なHTTPリクエストを示します。 enter image description hereVolleyのDjango Rest Framework APIへのPOSTリクエストを作成するには?

私は、フォームデータの形で4つの簡単なパラメータnamephonepassword1password2を送信し、サーバは値JWT(JSONウェブトークン)であるkeyという名前のキーを含むJSONオブジェクトを返すことを期待しています。これはうまく機能していますが、私がアプリで同じことをしようとするたびに、私は400の不正なリクエストエラーを受け取ります。私は複数のことをやってみましたが、すべて無駄でした。

ボレーのフォームデータの形式でデータを投稿する方法を教えてもらえますか?

ここに私のコードです。

public void signUp(View View) throws Exception 
    { 
     queue = Volley.newRequestQueue(this); 
     url = "http://<example>.com/auth/registration/"; 
     Map<String,String> params = new HashMap<String, String>(); 
     params.put("name","habc"); 
     params.put("phone","0324423"); 
     params.put("password1","pass"); 
     params.put("password2","pass"); 
     JsonObjectRequest add_user_request = new JsonObjectRequest(Request.Method.POST, url,new JSONObject(params), 
       new Response.Listener<JSONObject>() 
       { 
        @Override 
        public void onResponse(JSONObject response) { 

         try { 
          String key = response.getString("key"); 
          tv.setText(key); 
         } catch (JSONException e) { 
          // Handle exception 
         } 
        } 
       }, 
       new Response.ErrorListener() 
       { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         // error.getStackTrace() doesnt print enough information 
        } 
       } 
     ) 
     { 
      @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; 
      } 
     }; 
     Toast.makeText(this,"Adding requst to queue . . ",Toast.LENGTH_SHORT).show(); 
     queue.add(add_user_request); 
     queue.start(); 
    } 

答えて

0

getParams()メソッドをgetHeaders()メソッドの後に追加すると、サーバーにデータを送信する必要があります。

{ 
    @Override 
    protected Map<String, String> getParams() throws AuthFailureError { 
     Map<String,String> params = new HashMap<String, String>(); 
     params.put("name","habc"); 
     params.put("phone","0324423"); 
     params.put("password1","pass"); 
     params.put("password2","pass"); 
     return params; 
    } 
} 
+0

まだ400サーバーエラーが発生します。残りのAPIは、エラーの詳細を含むjsonオブジェクトを返しますが、 'Response.ErrorListner'で取得した' VolleyError'オブジェクトからそのjsonオブジェクトを取得できません。あなたは私にそのエラーを手伝ってもらえますか? – Darwesh

+0

'getHeaders()'を削除してやり直してください。 –

+0

同じエラーがまだ表示されます。私はエラーの場合でもサーバーが送信する応答を印刷する方法を知る必要があります。 – Darwesh

関連する問題