我已将我的dropwizard升级到0.8,使用jetty -9服务器。 我使用排气服务器1.0.15从我的应用程序发送我的JSON请求。 我的问题是,当我从volley发送任何JSON时抛出400,而当我发送邮递员的相同请求时,它工作正常。Jetty - 9排除请求错误与排球服务器
WARN [2015-05-07 14:16:18223] org.eclipse.jetty.http.HttpParser:非法字符0x16在状态=开始为缓冲HeapByteBuffer @ 642bbd0f [p = 1时,L = 78, c = 8192,r = 77] = {\ x16 < < < \ x03 \ x00 \ x00I \ x03 \ 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} WARN [2015-05-08 14:16:18,223] org.eclipse.jetty.http.HttpParser:badMessage:400非法字符0x16 for HttpChannelOverHttp @ 650d154b {r = 0,c = false,a = IDLE,uri = - }
and my code to make volley request
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;
}
};
非常感谢您的帮助。谢谢。
谁能告诉我如何跟踪完整的请求,而无需创建自定义排球请求,有什么办法吗?
该错误表示您的客户端未发送HTTP请求。如果你可以捕获你的网络流量(最容易在服务器端),你应该有更多的信息来处理。 –
@JoakimErdfelt,但同样的抽签要求以前工作完美,你能告诉我方式截取请求。我无法跟踪,我能看到的是我发送的请求,看起来很完美。 –
使用像Wireshark这样的工具来捕获有问题的流量。错误是告诉你(在原始HTTP请求解析期间),Jetty遇到了一个字节0x16(十六进制)并拒绝了请求(因为该字节在HTTP请求标头中的每个规范中都是无效的) –