getRequest方法试图通常处理 GET 请求。
JsonArrayRequest接受JSONArray对象,我可以使用此对象'JSONArray'来应用查询字符串参数,还是我必须自己修改网址。
public static void getRequest(final String tag, String url, JSONArray params, final GetRequest consumer, final ResponseFilter filt){
Log.d("Server",url);
String REQUEST_TAG = "GETMultiRequest";
JsonArrayRequest jsArrRequest = new JsonArrayRequest
(Request.Method.GET, url, params, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("Response", "received successfully");
consumer.update( filt.filter(response), tag );
}
}, new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
AppRequestSingleton.getInstance( ((Activity)consumer).getApplicationContext() ).addToRequestQueue(jsArrRequest, REQUEST_TAG);
}
答案 0 :(得分:0)
您可以使用StringRequest而不是使用JsonArrayRequest和Override getParam()
,也可以将参数从JSONArray更改为HashMap
代码应该是:
public static void getRequest (final String tag, String url, final JSONArray params, final GetRequest consumer, final ResponseFilter filt) {
// Converting JSONArray parameters into HashMap
final HashMap<String, String> pairs = new HashMap<String, String> ();
for (int i = 0; i < params.length (); i++) {
JSONObject j = params.optJSONObject (i);
Iterator it = j.keys ();
while (it.hasNext ()) {
String n = (String) it.next ();
try {
pairs.put (n, j.getString (n));
} catch (JSONException e) {
e.printStackTrace ();
}
}
}
Log.d ("Server", url);
String REQUEST_TAG = "GETMultiRequest";
StringRequest strRequest = new StringRequest (Request.Method.GET, url,
new Response.Listener<String> () {
@Override
public void onResponse (String resp) {
try {
JSONArray response = new JSONArray (resp);
Log.d ("Response", "received successfully");
consumer.update (filt.filter (response), tag);
} catch (JSONException e) {
e.printStackTrace ();
}
}
},
new Response.ErrorListener () {
@Override
public void onErrorResponse (VolleyError error) {
VolleyLog.d (TAG, "Error: " + error.getMessage ());
}
}) {
@Override
protected Map<String, String> getParams () throws AuthFailureError {
return pairs;
}
};
AppRequestSingleton.getInstance (((Activity) consumer).getApplicationContext ()).addToRequestQueue (strRequest, REQUEST_TAG);
}