1
ここでは、私がDjango Rest FrameworkベースのAPIにPostmanを通じて行う簡単なHTTPリクエストを示します。 VolleyのDjango Rest Framework APIへのPOSTリクエストを作成するには?
私は、フォームデータの形で4つの簡単なパラメータname
、phone
、password1
とpassword2
を送信し、サーバは値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();
}
まだ400サーバーエラーが発生します。残りのAPIは、エラーの詳細を含むjsonオブジェクトを返しますが、 'Response.ErrorListner'で取得した' VolleyError'オブジェクトからそのjsonオブジェクトを取得できません。あなたは私にそのエラーを手伝ってもらえますか? – Darwesh
'getHeaders()'を削除してやり直してください。 –
同じエラーがまだ表示されます。私はエラーの場合でもサーバーが送信する応答を印刷する方法を知る必要があります。 – Darwesh