我是谷歌的排球网络库(也是Android!)的新手,我试图以动态的方式传递POST参数!
现在我覆盖了:getParams()方法: 并以硬编码的方式返回参数。
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("login", "my_login");
params.put("password", "my_password");
return params;
}
我想传递变量而不是&#34;硬编码&#34;串...
首先,我尝试将我的Params Map作为我班级的成员,但是在getParams()方法中不能使用类成员。
也许我可以使用单例类来提供我想要传递的参数并使用getParams()方法中的实例将它们取回?但我不认为这是正确的方式。
以下是我的Volley要求的漏洞代码:
RequestQueue queue = VolleySingleton.getInstance().getRequestQueue();
String url = "https://theUrlToRequest";
StringRequest postRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
JSONObject mainObject = null;
try {
Log.i("app", "Result = " + response);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
Log.i("app", "Fail on Login" + error.toString());
}
}
) {
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("login", "my_login");
params.put("password", "my_password");
return params;
}
};
queue.add(postRequest);
答案 0 :(得分:2)
在这种情况下,您可以创建一个Class extends StringRequest。添加一个attr来存储params并将其返回到getParams();
MyStringRequest extends StringRequest{
private Map params = new HashMap();
public MyStringRequest (Map params,int mehotd,String url,Listener listenr,ErrorListener errorListenr){
super(mehotd,url,listenr,errorListenr)
this.params = params
}
@Override
protected Map<String, String> getParams(){
return params;
}
}
RequestQueue queue = VolleySingleton.getInstance().getRequestQueue();
String url = "https://theUrlToRequest";
Map<String, String> params = new HashMap<String, String>();
params.put("login", "my_login");
params.put("password", "my_password");
MyStringRequest postRequest = new MyStringRequest (params ,Request.Method.POST, url,
new Response.Listener<String>(){
},
new Response.ErrorListener(){
}
);
queue.add(postRequest);