安卓发送POST JSON原体与凌空

问题描述:

我要送与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和不显示错误?

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

检查这是测试代码试试这个:

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