gpt4 book ai didi

java - Jetty - 9 BAD REQUEST ERROR with Volley 服务器

转载 作者:太空狗 更新时间:2023-10-29 14:09:29 25 4
gpt4 key购买 nike

我已将我的 dropwizard 升级到 0.8,它使用 jetty -9 服务器。我正在使用 volley 服务器 1.0.15 从我的应用程序发送我的 JSON 请求。我的问题是,当我从 volley 发送任何 JSON 时,api 抛出 400,而当我从 postman 发送相同的请求时,它工作正常。

WARN [2015-05-08 14:16:18,223] org.eclipse.jetty.http.HttpParser: Illegal character 0x16 in state=START for buffer HeapByteBuffer@642bbd0f[p=1,l=78,c=8192,r=77]={\x16<<<\x03\x00\x00I\x01\x00\x00E\x03\x00\xBfE\x8e\x82\xCb\xE3\xCa...\x07\xC0\x11\x00/\x005\x00\x05\x00\xFfV\x00\x01\x00>>>-1\r\nContent-Lengt...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} WARN [2015-05-08 14:16:18,223] org.eclipse.jetty.http.HttpParser: badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp@650d154b{r=0,c=false,a=IDLE,uri=-}

和我发出 Volley 请求的代码

JSONObject userDetails = new JSONObject();
userDetails.put("email", "tasneem");
userDetails.put("password", "1234");
userDetails.put("deviceId", "243243");
userDetails.put("version", "4.4.4");
userDetails.put("platform", "Android");
JsonObjectRequest loginRequest = new JsonObjectRequest(Request.Method.POST, Constants.URL_LOGIN, userDetails, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.e(TAG, volleyError.toString());
mListener.onError(volleyError);
}
}) {
@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;
}
};

非常感谢您的帮助。谢谢。

谁能告诉我如何在不创建自定义 volley 请求的情况下跟踪完整的请求,有什么办法吗?

最佳答案

我跟踪了 wireshark 中发送的数据包,发现在 header 中,Content-Type被提到了两次。

Content-Type: application/json; charset=utf-8\r\n
Content-Type: application/json; charset=utf-8\r\n
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.2; HTC Desire 526GPLUS dual sim Build/KOT49H)\r\n
.
.
.

删除覆盖方法 getHeaders() 有效<罢工>

<罢工>
@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;
}

<罢工>

不需要覆盖,因为在 com.android.volley.toolbox.JsonRequest.java 中, Content-Type已设置为 application/json; charset=utf-8看起来 dropwizard 0.8 不会两次采用相同的 header 。

关于java - Jetty - 9 BAD REQUEST ERROR with Volley 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30123890/

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