获取不在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 无法从 PHP API 获取响应正文

React Native TextInput 不在 ScrollView 中滚动

无法在 react-native 中获取 iOS 推送通知设备令牌

gl-react-native 不在物理 iOS 设备上显示图像

Fetch in react native不发送帖子