我正在尝试点击一个 api(用 PHP 编写)并使用它发布参数。 这是我的代码:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, null,
new com.android.volley.Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println("prerna succes volley "+response.toString());
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("prerna fail volley "+error.toString());
}
})
{
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> pars = new HashMap<String, String>();
pars.put("Content-Type", "application/x-www-form-urlencoded");
return pars;
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("action", "login");
params.put("username", "abc@xyz.com");
params.put("pass", "a");
return params;
}
};
我总是得到无效的用户名/密码,这已经在 api 中处理,以防用户名和密码无效。在这种情况下,api 没有收到参数。 我尝试通过改造来做到这一点,并且它可以很好地工作,这意味着 API 编码没有问题。如果发生 Volley 抽射,我在这里缺少什么?
最佳答案
感谢支持。我可以通过将 JsonObjectRequest 更改为 StringRequest 来解决问题。我找到了Volley JsonObjectRequest Post parameters no longer work在那里我了解到 JsonObjectRequest 会产生一些意想不到的问题。 这是我的代码:
StringRequest jsonObjReq = new StringRequest(Request.Method.POST,
url,
new com.android.volley.Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response.toString());
String no = jsonObject.getString("$PhoneNo");
} catch (JSONException e) {
}
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("prerna fail volley " + error.toString());
}
})
{
@Override
public String getBodyContentType() {
Map<String, String> pars = new HashMap<String, String>();
pars.put("Content-Type", "application/x-www-form-urlencoded");
//return pars;
return "application/x-www-form-urlencoded";
}
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("action", "login");
params.put("username", "abc@xyz.com");
params.put("pass", "a");
return params;
}
};
但是我仍在尝试弄清楚为什么 JsonobjectRequest 不起作用。
关于android - 无法通过 android 中的 volley 以 url 编码的形式发布参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39274925/