我正在成功使用Volley来传递和接收JSONArrays和JSONObjects,但我使用的API要求我在PUT请求中传入一个简单的Integer数组[1,2,3]。有什么想法吗?
以下是API文档的摘录。
PUT api / commuters / {id} / favorites
更新与指定相关联的最喜欢的通勤者列表 通勤。
请求
正文参数:整数请求格式的集合
application / json,text / json,text / html示例: [1,2]RESPONSE
无
答案 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);
}