之前客户端使用 XMLHttpRequest 的方式发送请求没有问题, 现在使用 uni-app 写的客户端,打包成H5版本,服务器无法获取到data数据。 content-type 都是 application/json
- 发布:2018-11-27 17:16
- 更新:2018-11-27 20:25
- 阅读:2707
Trust - 少说废话
提供一个测试demo以及网站的地址
使用 koa 搭建的最简服务
router/index.js
const router = require('koa-router')();
router.post('/api/test', function(ctx, next) {
console.log('email:' + ctx.request.body.email)
ctx.body = {
status: true,
token: '123456'
}
});
module.exports = router;
app.js
const koa = require('koa');
const router = require('koa-router')();
const bodyParser = require('koa-bodyparser');
const apiRouter = require('./router');
const app = new koa();
const index = router.get('/', ctx => {
ctx.response.body = 'hello world';
}).routes();
app.use(index);
app.use(bodyParser());
app.use(apiRouter.routes());
app.listen(3000);
Trust - 少说废话
状态码 -4 是什么意思,还有个 debug 信息里面 method param miss:email 看起来是没有取到参数。
建议和后端联调一下,看具体的逻辑是怎么处理的。
H5 和 App 上测试是一样的
-
y***@163.com (作者)
服务器是功能正常运行的, 客户端有 cocos creator , 和 H5 的都正常跑, 现在用 uni-app 无法获取到数据, 服务器已经处理了各种数据类型发送方式
2018-11-27 17:31
y***@163.com (作者)
这个服务器用的 thinkphp 框架已经获取参数了, 调试过了参数什么都没有
-
y***@163.com (作者)
服务器是功能正常运行的, 客户端有 cocos creator , 和 H5 的都正常跑, 现在用 uni-app 无法获取到数据, 服务器已经处理了各种数据类型发送方式
2018-11-27 17:30
y***@163.com (作者)
难道用的不是同一个东西。。。。 我同样弄了个最简单的, post连消息都收不到了。。。诡异, 刚才还收到呢只是没参数。 用 postman 测试都正常
服务器端:
app.js
const koa = require('koa')
const router = require('koa-router')()
const bodyParser = require('koa-bodyparser')
let app = new koa()
//这里如果改成 get, 客户端用get请求就能收到 ,从 ctx.query 中获得 email
router.post('/', async (ctx, next) => {
console.log('email:' + ctx.request.body.email)
ctx.body = 'hello'
})
app.use(bodyParser())
app.use(router.routes())
app.listen(3000)
客户端:
uni.request({
url: 'http://localhost:3000',
data: {
email: 'aaaaaa'
},
success: (res) => {
console.log(res.data)
},
method: 'POST'
});
y***@163.com (作者)
试了自己之前的好几个服务器, 都无法获取到 POST的data, 有php服务器 和 nodejs 服务器。 之前客户端使用的是 XMLHttpRequest 都没问题
uni.request({
url:'http://dev.wordxn.com/api_call/v1.0.0/AccountC/getAuthCodeByEmail',
data: {
email: 'aaaaa@126.com',
type: 'register'
},
success(res) {
console.log(res)
},
method: 'POST'
})
2018-11-27 17:22
y***@163.com (作者)
GET 方法 能正常追加到 query string
2018-11-27 17:23
Trust
回复 y***@163.com:App和H5上测试,都是返回 -4
2018-11-27 17:29
y***@163.com (作者)
-4 是自定义的状态, api参数错误,或缺失, 因为没收到 POST 的data
2018-11-27 17:34
Trust
回复 y***@163.com:本地用 laravel 的测试接口,读取参数正常。建议检查一下服务器的配置,是不是没有处理好 OPTIONS 的情况,另外会不会有可能在 OPTIONS 的时候去取值了。
2018-11-27 17:34
y***@163.com (作者)
同样的服务器代码,我用各种可能的客户端发送请求, 就uni.request 无法收到data, 其他方法都能正常发送, 难度是我是我用的服务器框架不兼容你们的方式? 只能 呵呵了
2018-11-27 17:40
y***@163.com (作者)
uni-app 太难伺候啊, 等我有精力了好好调试那个用了好多年的服务器!!
2018-11-27 17:42
Trust
回复 y***@163.com:用的都是标准的协议,只不过是封装了一层规范可以方便使用。不存在什么特殊的地方,这边换了 Express 最简单的服务也可以正常取值。
2018-11-27 17:47
y***@163.com (作者)
node服务器我用的 koa2 框架 使用 koa-bodyparser 解析, 其他客户端发过来的都没问题呢, 就 uni-app 的收不到啊,
2018-11-27 17:54
y***@163.com (作者)
看了下论坛 好多遇到这个问题, 不光是 POST方法还有PUT, 安卓和IOS 都无法收到数据
2018-11-27 18:14
Trust
回复 y***@163.com:搭建了一个最简单的 koa 服务,同样获取正常。
2018-11-27 18:37
Trust
PUT 请求的问题,最新的 1.2 版本已经修复。
2018-11-27 18:38