我正在尝试使用 Android 中的 Volley 将一些参数发布到我的 Rails API。这是代码:
对于 Request.Method,我尝试了 POST/GET/PUT 没有任何效果。
我试图在 getParams() 中调用一个日志语句,它被记录了,但参数没有添加到 URL。
StringRequest sr = new StringRequest(Request.Method.GET, Links.URL_login, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Log.d(TAG, "" + error.getMessage() + "," + error.toString());
}
}){
@Override
protected Map<String,String> getParams(){
Log.d(TAG, "called?");
Map<String, String> params = new HashMap<String, String>();
params.put("email", "daniel");
params.put("pw", "123");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> headers = new HashMap<String, String>();
headers.put("Content-Type","application/x-www-form-urlencoded");
headers.put("abc", "value");
return headers;
}
};
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(sr);
最佳答案
如果服务器读取的是键值对,那么使用这个
Uri.Builder builder = Uri.parse(Links.URL_login).buildUpon();
builder.appendQueryParameter("email", "me@email.com");
builder.appendQueryParameter("pw", "mypwd");
String loginUrl=builder.build().toString();
StringRequest sr = new StringRequest(Request.Method.GET, loginUrl......
@vovaxo 说 GET 请求永远不会调用 getParams()
方法。
关于android - Volley 不调用 getParams(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35553899/