servlet后台接收不到前端发来的post数据

我后台用servlet编写了api,然后我用postman之类的工具模拟post请求测试过,后台工作都是正常的,能够接收到请求。之后前端页面一开始是用vue-resource编写的,后来用了axios,后台用getParameter()都接收不到任何数据,但能够通过getReader()的方式得到我发送的post信息{"name": "Fred"}这种样子的。请问这是为什么。


我vue-resource axios的代码都是按照官网最简单的例子来写的,不带别的任何设置,比如下面的

this.$http.post('/api/goods', {
                    name: 'Fred',
                 })
                  .then(function (response) {
                    console.log(response);
                 })
                  .catch(function (error) {
                    console.log(error);
                 });

请问这是为什么额,我都要蛋疼死了

阅读 13k
2 个回答

好吧问题已经解决了,是因为vue-resource axios按照文档的写法是发送json过去,而不是类似表单的那种提交,所以后台不能接受到。vue-resource我不知道怎么解决,不过axios我已经找到解决办法了,文档里面有

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params); 

这样子使用就OK啦

楼主你遇到的问题在于POST提交中请求参数可以有两种不同形式:form data和request payload,相关资料参阅:http://blog.csdn.net/mhmyqn/a...

如何判断是这样的提交?在Chrome的开发者工具面板看request中有没有payload。
如何解析这样的提交?用ServletRequest.getReader()方法获得访问payload的reader。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进