2016-09-27 2 views
2

Это сообщение Запрос осуществляется с помощью ПочтальонВаши параметры форм-данных в организме с помощью Volley

enter image description here

Ответ Я хочу, чтобы это:

{ 
    "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); 

Но когда я отправляю запрос, он возвращает ошибка!

Как решить проблему?

+0

попробовать реализовать getParams() и передать простое ключевое значение пары вместо объекта JSON – Jai

+0

попробовал, ответ об ошибке будет получено. все отправленные данные были правильными. –

+0

Удалите метод getHeaders(), а затем попробуйте. – Jai

ответ

3

Попробуйте использовать нижеследующий код, который будет использоваться для отправки простых данных сообщения с помощью волейбола, просто замените 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); 
+0

Почему его не работает с JsonObjectRequest, но с StringRequest? –

Смежные вопросы