问题产生背景:接口请求正常,但是数据无法正常传递,以我出现的问题截图为例:
然后我查看了日志,结果日志给我打印的结果是:
对比之后我才发现,这参数的字符“+”没给我传啊,然后开始debug,最后发现居然是这个 StringEntity entity = new StringEntity(param,"UTF-8");捣的鬼,然后改成UrlEncodedFormEntity问题解决。
解析:StringEntity和UrlEncodedFormEntity区别
1、UrlEncodedFormEntity:消息体内容类似于“KEY1=VALUE1&KEY2=VALUE2&…”这种形式,服务端接收以后也要依据这种协议形式做处理;StringEntity:使用的是json格式
2、StringEntity有两个参数,一个是具体的参数值(string串),另一个是ContentType,默认是text/plain,编码格式是:ISO_5598_1;urlEncodeFormEntity会将参数以key1=value1&key2=value2的键值对形式发出。类似于传统的application/x-www-form-urlencoded表单上传