HttpURLConnection返回400和0。抓包分析高手求指点。。

Smile__LV 2014-03-27 05:31:23
本项目分前端Android app 程序。后台java SSH。

app向后台提交数据,格式为json。http提交方式为post
现在的情况是:
1、当提交的少量数据,比如9条json数据的时候是正常。
2、提交稍多些数据比如14条数据,HttpURLConnection.getResponseCode()返回400状态码,无异常抛出。
3、当提交更多数据,比如20条json数据,HttpURLConnection.getResponseCode()方法返回0状态码,同时此方法抛出异常。

现在本鸟认为可能和数据大小有关,但是一种共识是post提交数据与数据大小无关。

最后使用Wireshark抓包分析,发现失败的情况,tcp握手貌似都没成功。几次请求的IP地址和参数都是一样的。不同的在我看来只有json数据。

现在我附上成功和失败的信息供大神指点,若要详细看恐怕得需要导入到Wireshark中分析。详情请看附件。
过滤IP请输入 ip.dst==192.168.1.118

wireshark文件地址:
成功:http://yun.baidu.com/xcloud/csdn/pan/share/link?shareid=491074816&uk=1395844549
失败:http://yun.baidu.com/xcloud/csdn/pan/share/link?shareid=496928904&uk=1395844549
...全文
556 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rossini23 2014-05-17
  • 打赏
  • 举报
回复
从“失败”的截图来看,TCP握手是成功了,并且已经开始发现数据了,图上能看出来有4个TCP分片数据,只不过报Http 400错误后你的Server把TCP连接RST掉了。 能不能把POST里的content-type改为application/json试试? 现在你用的是application/x-www-form-urlencoded。 还有,POST里有个x-emp-signature: 后面一长串数据,看起来跟content完全一样的,这个是做什么用的?
Smile__LV 2014-03-27
  • 打赏
  • 举报
回复
为什么一直没人回复哦
Smile__LV 2014-03-27
  • 打赏
  • 举报
回复
搬板凳等大神啊 。。。。。
Smile__LV 2014-03-27
  • 打赏
  • 举报
回复
失败部分截图
图1

图2


50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧