これは、postmanを使用して行われたPOSTリクエストです。
私が取得したい応答は次のとおりです。
{
"result": "success",
"reason": {
"first_name": "aswath",
"last_name": "AsH",
"email": "[email protected]",
"phone": "\"8867336754\"",
"authy_id": "26829982",
"updated_at": "2016-09-27 06:38:07",
"created_at": "2016-09-27 06:38:07",
"id": "5012"
},
"sms": "token sent"
}
これは私が送信しようとしているリクエストです:
JSONObject jsonBody = new JSONObject();
jsonBody.put("first_name", firstname);
jsonBody.put("last_name", lastName);
jsonBody.put("email", Email);
jsonBody.put("phone", number);
final String mRequestBody = jsonBody.toString();
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("VOLLEY", response);
Log.d("**********", "FETCHING IN VOLLEY REQ" + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("VOLLEY", error.toString());
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", mRequestBody, "utf-8");
return null;
}
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "multipart/form-data");
return headers;
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String responseString = "";
if (response != null) {
responseString = String.valueOf(response.statusCode);
// can get more details such as response.headers
}
return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
}
};
getRequestOtpPage().addToRequestQueue(stringRequest);
しかし、リクエストを投稿するとエラーが返されます!
問題を解決する方法は?
以下のコードを試してみてください。これは、ボレーを使用して簡単な投稿データを送信するために使用します。URLとパラメーターデータを置き換えるだけです。
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put(KEY_USERNAME,username);
params.put(KEY_PASSWORD,password);
params.put(KEY_EMAIL, email);
return params;
}
};
getRequestOtpPage().addToRequestQueue(stringRequest);