【发布时间】:2016-01-12 14:43:07
【问题描述】:
我是 google 的 Volley 网络库的新手(也是 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;
}
我想传递变量而不是“硬编码”字符串...
首先我尝试将我的参数 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);
【问题讨论】:
-
为什么不在请求之前创建一些变量并将它们均衡为类变量并将您创建的变量添加到参数中?
-
有必要从
getParams()返回Map<String, String>,而不是仅仅在那里定义它。您可以将自己的集合创建为类级别变量并从getParams()返回。 -
@shank :这是个好主意。我马上试试这个。谢谢。
-
你应该扩展 StringRequest 并添加一个 attr 来存储参数。
标签: android network-programming android-volley