制作无数爬虫,可能都是比较简单的网站,今天自己用java一个测试数据发现了问题
这是我自己写的路由。
这里的意思是获取前端传过的的全部数据然后json返回(为什么不直接返回?,我上去就是一巴掌,当然是执行一些不可见人的操作。。。(自己在包个json是为了给自己看的))
然后我用jquery的Ajax测试成功
,接下来我用restclient测试
返回结果为{};what????出什么问题了?
经过苦战我发现了问题所在,restclent post默认使用
content-type: text/json;charset=UTF-8
而我通过浏览器抓包发现我用的是 x-www-form-urlencoded
最后我把json格式的数据改成 表单形式的 xx=xx&xxx=xx 修改content-type: x-www-form-urlencoded ;charset=UTF-8
成功返回数据了。
那么如何判断服务器使用的是那种类型呢?
抓包的时候可以看见可以直接看request heards
也可也看提交的数据是什么类型的 比如谷歌的
(小姿势:get默认使用form data的形势 也就是application/x-www-form-urlencoded)
application/x-www-form-urlencoded 这个提交以后会是 from data
text/plain; application/json 是request payload 提交的时候需要以json格式提交 如果是java后台可能会获取不到参数。