获取不在React Native中发送正文
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取不在React Native中发送正文相关的知识,希望对你有一定的参考价值。
我正在尝试将一些JSON从本地应用程序发布到本地网络上的端点,但它似乎实际上并不是在发布正文。
fetch( 'http://192.168.4.1/access-points', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify( {
ssid: 'SSIDNAME',
password: 'SSIDPASSWORD',
} ),
} );
它使用正确的方法和内容类型命中端点,但是身体无处可寻。
下面是当我从react本机应用程序发出请求时端点似乎收到的内容。
POST /access-points HTTP/1.1
Host: 192.168.4.1
Content-Type: application/json
Connection: keep-alive
Accept: */*
User-Agent: Hame/1 CFNetwork/808.2.16 Darwin/15.6.0
Content-Length: 45
Accept-Language: en-us
Accept-Encoding: gzip, deflate
当我使用Paw提出请求时,这就是我得到的
POST /access-points HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: 192.168.4.1
Connection: close
User-Agent: Paw/3.0.16 (Macintosh; OS X/10.11.6) GCDHTTPRequest
Content-Length: 45
{"ssid":"SSIDNAME","password":"SSIDPASSWORD"}
正如您所看到的,两者都报告了正确的Content-Length
答案
我有同样的问题,然后我检查了request.form和request.data,我发现正文被发送到request.data,所以request.form返回None
所以解决方案是将request.form更改为request.data或更改fetch选项以将body发送到request.form
如果要将正文发送到request.form,请设置标题:
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
例如,数据是
const data = {
ssid: 'SSIDNAME',
password: 'SSIDPASSWORD',
}
然后创建表单数据:
const formData = new FormData();
for (key in data) {
formData.append(key, data[key]);
}
获取将是:
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
},
body: formData
})
以上是关于获取不在React Native中发送正文的主要内容,如果未能解决你的问题,请参考以下文章
在 expo/react-native 中发送图像时随机出现“错误处理请求正文”
React Native TextInput 不在 ScrollView 中滚动
无法在 react-native 中获取 iOS 推送通知设备令牌