Volleyのリクエストにパラメータとヘッダーの値を追加する方法です。
StringRequestクラスの親クラスである
Requestクラスに、次のようなメソッドがあります。
/**
* Returns a list of extra HTTP headers to go along with this request. Can
* throw {@link AuthFailureError} as authentication may be required to
* provide these values.
* @throws AuthFailureError In the event of auth failure
*/
public Map<String, String> getHeaders() throws AuthFailureError {
return Collections.emptyMap();
}
/**
* 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.
*
* <p>Note that you can directly override {@link #getBody()} for custom data.</p>
*
* @throws AuthFailureError in the event of auth failure
*/
protected Map<String, String> getParams() throws AuthFailureError {
return null;
}
StringRequestを生成する際、getHeaders()とgetParams()をオーバーライドすれば、POSTパラメータとヘッダーの値を追加することができます。
次のソースはオーバーライドによって値を渡すサンプルです。
/**
* Request(StringRequest) with params
*
* @param url request url
* @param listener listener for Response or Error
* @param params value of setting Http Params
* @param headers value of setting Http headers
*/
public void get(String url, final ResponseListener listener, final Map<String, String> params
, final Map<String, String> headers) {
StringRequest request = new StringRequest(url,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
listener.onResponse(s);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
listener.onErrorResponse(volleyError);
}
}
) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers;
}
};
mRequestQueue.add(request);
}
0 件のコメント:
コメントを投稿