2017-04-03 22 views
0

我要送與voley後,但是當我嘗試發送生體的要求,而不是響應得到這個錯誤安卓發送POST JSON原體與凌空

***** * com.android.volley.ServerError ******:{「message」:「沒有接收到註冊的用戶帳戶數據。」}

我在郵差中試過同樣的東西,我在我的代碼中修復它?

原體,在郵遞員的工作 - >

{ 
    "camp1": { 
     "value": "value" 
    }, 
    "camp2": { 
     "value": "value2" 
    } 
} 

這是它是在我的代碼 - >

public void requestRegistrationInfo(@NonNull final String camp1, @NonNull final String camp2,final Listener listener) { 
      RequestQueue requestQueue = Volley.newRequestQueue(context); 
      requestQueue.add(new JsonObjectRequest(
        Request.Method.POST, URL, 
        new Response.Listener<JSONObject>() { 
         @Override 
         public void onResponse(JSONObject response) { 
          Log.v("IT WORK"); 
          listener.onSuccess(); 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Log.e("******" + error.toString() + "******", getErrorMessage(error)); 
          listener.onFailure(); 
         } 
        }) 
{ 

       @Override 
       protected Map<String,String> getParams() { 

        Map<String, String> map = new HashMap<>(); 
        map.put("{camp1", "value"); 
        map.put("camp2", "value"); 

        return map; 
       } 

       @Override 
       public Map<String, String> getHeaders() throws AuthFailureError { 
        Map<String, String> map = new HashMap<>(); 
        map.put("header1", "header1"); 
        map.put("header2", "header2"); 
        return map; 
       } 
      }); 
     } 

我能做些什麼來正確地發送原始JSON和不顯示錯誤?

回答

0
try { 
RequestQueue requestQueue = Volley.newRequestQueue(this); 
String URL = "http://..."; 
JSONObject jsonBody = new JSONObject(); 
jsonBody.put("Title", "Android Volley Demo"); 
jsonBody.put("Author", "BNK"); 
final String requestBody = jsonBody.toString(); 

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     Log.i("VOLLEY", response); 
    } 
}, 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 requestBody == null ? null : encodeParameters(requestBody , getParamsEncoding()); 
     } catch (UnsupportedEncodingException uee) { 
      VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8"); 
      return null; 
     } 
    } 

    @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)); 
    } 
}; 

requestQueue.add(stringRequest); 
} catch (JSONException e) { 
e.printStackTrace(); 
} 

請與編輯getBody()

@Override 
    public byte[] getBody() throws AuthFailureError { 
     try { 
      return requestBody == null ? null : encodeParameters(requestBody , getParamsEncoding()); 
     } catch (UnsupportedEncodingException uee) { 
      VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8"); 
      return null; 
     } 
    } 
+0

使用此代碼,它有這個錯誤 - > ***** * com.android.volley.ServerError ******:{「message」:「Not acceptable format:json」} – Liru

+0

我正在試試這個,是encodeParameters是自定義函數 – Mahen

0

檢查這是測試代碼試試這個:

private void multipartRequestWithVolly() { 
     String urll = "your_url"; 

     progressDialog.show(); 
     StringRequest request = new StringRequest(Request.Method.POST, urll, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       progressDialog.dismiss(); 
       if (!TextUtils.isEmpty(response)) { 
        Log.e(TAG, "onResponse: " + response); 
        textView.setText(response); 
       } else { 
        Log.e(TAG, "Response is null"); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       progressDialog.dismiss(); 
       Log.e(TAG, "onErrorResponse: " + error.toString()); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       hashMap = new HashMap<>(); 
       hashMap.put("OPERATIONNAME", "bplan"); 
       hashMap.put("mcode", "298225816992"); 
       hashMap.put("deviceid", "dfb462ac78317846"); 
       hashMap.put("loginip", "192.168.1.101"); 
       hashMap.put("operatorid", "AT"); 
       hashMap.put("circleid", "19"); 
       return hashMap; 
      } 
     }; 
     AppController.getInstance().addToRequestQueue(request); 
    } 
+0

使用這段代碼,下面的代碼 - > ****** com.android。 volley.ServerError ******:{「message」:「不可接受的格式:json」} – Liru