我正在尝试对页面执行 POST 请求,请求所需的参数必须采用 json 格式,因为它们采用以下格式:
{
a: 1,
b: "ASD",
c: ["A","B"]
}
据我所知,这不能转换为 Map<String, String>
对象,这是为了制作 StringRequest
而不是 JsonObjectRequest
所需要的,话虽这么说,有什么方法可以发送 jsonObject
作为参数并且仍然能够处理来自服务器的字符串响应(使用 volley)?
我已经阅读了这些问题:
-这个没有得到有效的答案
How to get string response from php using android volley JsonObjectRequest?
-这个没有回答我的问题
-这个对自定义请求有一个有希望的答案,但它的作用与我尝试的相反,并且我未能成功创建自己的自定义请求来接受我需要的参数。
最佳答案
结果是发布类似 a[0]:"1"
的内容和a[1]:"2"
在 hashmap params 中与 a: ["1","2"]
相同所以我很好用 StringRequest 因为它使用 <String,String>
参数映射,据说我最终使用了这个:
StringRequest xx = new StringRequest(Request.Method.POST, getAjaxUrlForFunction("Login"), new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.w("RESPONSE",response);
callback.onSucces(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
callback.onError(error);
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> paramss = new HashMap<String, String>();
paramss.put("funcion","login");
paramss.put("ajax_request","controller");
paramss.put("args[0]", name);
paramss.put("args[1]", password);
return paramss;
}
};
关于java - Volley jsonObjectRequest如何处理字符串结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58758532/