5/9/2017 8:47:13 AM
问题描述
手机app发送Http请求服务器资源时,报400 Bad Request错误。
分析
4xx的响应结果表明客户端是发生错误的原因所在。
- 400 Bad Request
- 该状态码表示请求报文中存在语法错误,需修改请求的内容后再次发送请求。
- HTTP报文
- HTTP报文本身是由多行数据组成的字符串文本,由报文首部和报文主体组成
- 请求行
- 报文首部
- 空行
- 报文主体
POST /xx HTTP/1.1 Host:index.html ... 空行 报文主体
- HTTP报文本身是由多行数据组成的字符串文本,由报文首部和报文主体组成
- http请求参数中含有 & 或者空格,则必须URL编码
- GET请求时,参数含有中文,也需要URL编码
定位
- 定位到目标请求代码,发现日期参数为xxxx年 xx月 xx日 xx时 xx分 xx秒字符串且未进行URL编码
解决
- URLEncoder.encode(url, "UTF-8");对url进行UTF-8编码,将空格去除
总结
- 根据错误现象,分析可能导致问题发生的原因
- 定位出错位置,找到出错原因
- 修复
PS:
- 401 Unautorized 需认证或认证失败
- 403 Forbidden 不允许访问资源
- 404 Not Found 服务器上没有请求资源