如何将简单的Integer []传递给Volley?

时间:2016-11-23 14:15:52

标签: java android json android-volley

我正在成功使用Volley来传递和接收JSONArrays和JSONObjects,但我使用的API要求我在PUT请求中传入一个简单的Integer数组[1,2,3]。有什么想法吗?

以下是API文档的摘录。

  

PUT api / commuters / {id} / favorites

     

更新与指定相关联的最喜欢的通勤者列表   通勤。

     

请求
  正文参数:整数请求格式的集合
   application / json,text / json,text / html示例: [1,2]

     

RESPONSE
  无

1 个答案:

答案 0 :(得分:0)

将文本发送到Volley请求的技巧是覆盖getBoddy方法以打印出你的text / json。

这是放置整数数组的方法:

public static void putFavorites(final JSONArray data, final MyApp.StringCallback callback) {

    String url = APP_API + "commuters/" +
            MyApp.getPrefs().getInt("commuterId", 0) + "/favorites";
    StringRequest stringRequst = new StringRequest(Request.Method.PUT, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String result) {
                    try {
                        callback.onSuccess(result);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError volleyError) {
                    callback.onError(volleyError);
                }
            }) {


        @Override
        public String getBodyContentType() {
            return "text/json";
        }

        @Override
        public byte[] getBody() throws AuthFailureError {
            Log.d(TAG, (data.toString()).getBytes().toString());
            return (data.toString()).getBytes();
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String,String> headers = VolleySingleton.getInstance(GACommuter.getAppContext()).getVolleyHeader("text/json");
            return headers;
        }
    };

    stringRequst.setRetryPolicy(new DefaultRetryPolicy(
            20000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
    ));

    addToRequestQueue(stringRequst);
}