gpt4 book ai didi

android - 使用 Volley 的 Post 方法不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:12:47 25 4
gpt4 key购买 nike

您好,我正在使用 Volley 作为我的登录页面。我需要像这样传递数据

{
userID : '-988682425884628921',
email :'aditya@vyas.com',
passwd : '123ss'
}

我正在使用 POST 方法发送数据,我已经 checkin DHC,Api 在 DHC 中工作正常,我得到 JSON Response ,但是当我尝试使用 Volley 时,我无法得到回应。我的 logcat 中甚至没有任何错误。

Java代码

 RequestQueue mVolleyQueue = Volley.newRequestQueue(this);

CustomRequest req = new CustomRequest(Request.Method.POST,url,null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v("tag","login response " + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v("tag","login error response " + error.getMessage());
}
}){
@Override
public Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();

params.put("userID", "-988682425884628921");
params.put("email", "aditya@vyas.com");
params.put("passwd", "123ss");
return params;
}


@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
mVolleyQueue.add(req);

错误

05-28 09:20:14.696 2450-2468/com.android.msahakyan.expandablenavigationdrawer E/tag﹕ parseNetworkError is ! null
05-28 09:20:14.697 2450-2468/com.android.msahakyan.expandablenavigationdrawer E/tag﹕ parseNetworkError status code : 400
05-28 09:20:14.697 2450-2468/com.android.msahakyan.expandablenavigationdrawer E/tag﹕ parseNetworkError message : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Header</h2>
<hr><p>HTTP Error 400. The request has an invalid header name.</p>
</BODY></HTML>


}

最佳答案

解决了你的问题。刚刚使用了 JsonArrayRequest 并以 JsonObject 形式传递了参数:

    Map<String, String> params = new HashMap<String, String>();
params.put("userID", "userid");
params.put("email","email");
params.put("passwd", "password");
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, "url", new JSONObject(params),
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
System.out.println("response -->> " + response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("change Pass response -->> " + error.toString());
}
});

request.setRetryPolicy(new

DefaultRetryPolicy(60000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));


Volley.newRequestQueue(activity).add(request);

无需覆盖 getParams()getHeaders()

问题:1您收到响应代码 500,因为服务器正在接受 params 作为 JsonObject,而我们正在尝试提供 String .

问题:2您使用的是 JsonObjectRequet,但服务器的响应在 JsonArray 中,因此您需要使用 JsonArrayRequest 来接受 JsonArray< 中的响应

尝试让我知道这是否有帮助:)

关于android - 使用 Volley 的 Post 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com