Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nvue下纯native渲染post with application/x-www-form-urlencoded 有问题 #1100

Closed
wakaryry opened this issue Dec 9, 2019 · 7 comments
Closed
Assignees
Labels
bug Something isn't working

Comments

@wakaryry
Copy link

wakaryry commented Dec 9, 2019

  • 2.4.2/2.4.4 alpha,其它未测试;
  • nvue页面;
  • uni-app模式;
  • native渲染;

content-type 为 application/x-www-form-urlencoded 时,data 数据 打包有问题,后台接收数据异常。

b'{\n  "phone" : "17610779055",\n  "type" : "register",\n  "product" : 4\n}'

关掉native开关之后,数据正常:

b'phone=17610779055&type=register&product=4'

测试用例

就一个按钮,点击提交数据到服务器。没有任何的依赖。

<template>
	<view>
		<view style="height: 100rpx;"></view>
		<button @tap="toUni">uni request</button>
	</view>
</template>

<script>
	export default {
		methods: {
			toUni() {
				uni.request({
					header: {'Content-Type': 'application/x-www-form-urlencoded'},
					data: {
						phone: '17610771234',
						type: 'register',
						product: 4
					},
					method: 'POST',
					url: 'your url',
					success(res) {
						console.log("请求发送成功")
						console.log(res)
					},
					fail(err) {
						console.log("请求发送失败")
						console.log(err)
					}
				})
			}
		}
	}
</script>

<style>

</style>

希望确认一下这个问题,因为我 nvue 页面,关闭掉 native 之后,白屏,没有任何报错。打开 native 之后,数据打包又存在问题。

谢谢。

这个问题花费了差不多一个多星期才知道是什么地方引起的。

@Wangyaqi
Copy link
Contributor

Wangyaqi commented Dec 10, 2019

按照weex官方的文档 https://weex.apache.org/zh/docs/modules/stream.html#fetch

  • 默认 Content-Type 是 application/x-www-form-urlencoded。
  • 如果你需要通过 POST 发送 json 数据, 需要将 Content-Type 设为 application/json

uni-app在2.3.0版本做了调整,renderer配置为native的纯nvue项目,uni.request 发起网络请求时,Content-Type 默认设置为 application/json

@wakaryry
Copy link
Author

wakaryry commented Dec 10, 2019

意思时,native的时候,我设置了Content-Typeapplication/x-www-form-urlencoded,传入的 data 需要我自己打包成字符串?

还是说,我设置了Content-Typeapplication/x-www-form-urlencoded,uni也会将它搞成applicaton/json?

现在我设置了Content-Typeapplication/x-www-form-urlencoded,数据就不正确。后台只开放了application/x-www-form-urlencoded

我要怎么搞成正确的结果。

@Wangyaqi
Copy link
Contributor

看了下源码,我上面说的有点问题,这块我们内部应该处理了才对,我再验证一下

@wakaryry
Copy link
Author

看了下源码,我上面说的有点问题,这块我们内部应该处理了才对,我再验证一下

好的。感觉这个是数据打包的问题。按照uni.request的接口,我们都是给Object,uni自己会根据content-type打包一次,然后再提交给weex。不知道是不是这样处理的。

@Wangyaqi Wangyaqi added the bug Something isn't working label Dec 10, 2019
@wakaryry
Copy link
Author

#1098

@leixingqiang
Copy link

新手入门
看你们说关闭掉 native 就能正常请求
但是 native 怎么关闭啊

@wakaryry
Copy link
Author

@leixingqiang 应该已经解决了这个问题了的。另外在manifest.json里面有是否native的配置。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants