Android Volley getParam() 方法不调用 JsonArrayRequest GET 方法
Android Volley getParam() method not call for JsonArrayRequest GET method
我想使用 volley JsonArrayRequest 进行带参数的 GET 请求。我用参数调用了 getParam() 方法,但它没有调用。
JsonArrayRequest jreq = new JsonArrayRequest(Request.Method.GET,"http://api.openchargemap.io/v2/poi/",null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", "" + response.toString());
if(response.toString().length() > 1) {
parseJson(response.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("TAG",""+error.toString());
}
})
{
@Override
protected Map<String, String> getParams() {
Map<String,String> map = new HashMap<String,String>();
map.put("output","json");
map.put("countrycode","US");
map.put("latitude","32.57933044");
map.put("longitude","-110.8514633");
map.put("maxresults","100");
map.put("distance","10");
map.put("distanceunit","KM");
map.put("compact","true");
map.put("verbose","false");
return map;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jreq);
我没有得到正确的响应,因为 volley 没有调用 getParam()。
我在堆栈溢出方面进行了很多搜索,但没有得到正确的答案,而且 volley 文档也不好。这就是为什么我把我的问题放在这里。谢谢。
如下所示:
Returns a Map of parameters to be used for a POST or PUT request. Can
throw
* {@link AuthFailureError} as authentication may be required to provide these values.
...
因此,对于 Request.Method.GET
使用 Uri.Builder
而不是重写 getParams
方法来发送带有 url
的查询参数
如何使用Uri.Builder
:
Uri.Builder urlBuilder = new Uri.Builder();
builder.scheme("http")
.authority("api.openchargemap.io")
.appendPath("v2")
.appendPath("poi")
.appendQueryParameter("output",json)
...// add other paramters in same way
;
从构建器获得最终 url:
URL finalURL = new URL(urlBuilder.build().toString());
使用 finalURL
url 进行 GET 请求。
我想使用 volley JsonArrayRequest 进行带参数的 GET 请求。我用参数调用了 getParam() 方法,但它没有调用。
JsonArrayRequest jreq = new JsonArrayRequest(Request.Method.GET,"http://api.openchargemap.io/v2/poi/",null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", "" + response.toString());
if(response.toString().length() > 1) {
parseJson(response.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("TAG",""+error.toString());
}
})
{
@Override
protected Map<String, String> getParams() {
Map<String,String> map = new HashMap<String,String>();
map.put("output","json");
map.put("countrycode","US");
map.put("latitude","32.57933044");
map.put("longitude","-110.8514633");
map.put("maxresults","100");
map.put("distance","10");
map.put("distanceunit","KM");
map.put("compact","true");
map.put("verbose","false");
return map;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jreq);
我没有得到正确的响应,因为 volley 没有调用 getParam()。 我在堆栈溢出方面进行了很多搜索,但没有得到正确的答案,而且 volley 文档也不好。这就是为什么我把我的问题放在这里。谢谢。
如下所示:
Returns a Map of parameters to be used for a POST or PUT request. Can throw * {@link AuthFailureError} as authentication may be required to provide these values. ...
因此,对于 Request.Method.GET
使用 Uri.Builder
而不是重写 getParams
方法来发送带有 url
如何使用Uri.Builder
:
Uri.Builder urlBuilder = new Uri.Builder();
builder.scheme("http")
.authority("api.openchargemap.io")
.appendPath("v2")
.appendPath("poi")
.appendQueryParameter("output",json)
...// add other paramters in same way
;
从构建器获得最终 url:
URL finalURL = new URL(urlBuilder.build().toString());
使用 finalURL
url 进行 GET 请求。