在 expo/react-native 中发送图像时随机出现“错误处理请求正文”
Posted
技术标签:
【中文标题】在 expo/react-native 中发送图像时随机出现“错误处理请求正文”【英文标题】:"Error processing request body" occurs randomly when sending image in expo/react-native 【发布时间】:2020-04-02 14:30:52 【问题描述】:我最近在使用我正在开发的应用程序的 ios 版本时遇到问题。通常在将图像发送到服务器时(使用组件 expo-image-picker 选择),它会返回错误:
Error procession request body: Error Domain=ABI34_0_0RCTErrorDomain Code=0
"Invalid request token"
UserInfo=NSLocalizedDescription=Invalid request token.
这是发送数据的方法:
alterUserDataOnDatabase(formValues, callback)
fetch(url ,
method: 'POST',
headers:
Accept: 'application/json',
'Content-Type': 'multipart/form-data',
,
body: formValues
)
.then(response => response.json())
.then(responseJson => callback(responseJson));
这是使用图像选择器获取图像本身的代码
_pickImage = async () =>
const
status: cameraRollPerm
= await ImagePicker.getCameraRollPermissionsAsync();
//await Permissions.getAsync(Permissions.CAMERA_ROLL);
// only if user allows permission to camera roll
if (cameraRollPerm === 'granted')
try
let pickerResult = await ImagePicker.launchImageLibraryAsync(
allowsEditing: true,
aspect: [4, 4],
);
this._handleImagePicked(pickerResult);
catch (e)
console.log(e)
;
_handleImagePicked = async pickerResult =>
try
this.setState(
uploading: true
);
if (!pickerResult.cancelled)
let uri = pickerResult.uri;
let uriParts = uri.split('.');
let fileType = uriParts[uriParts.length - 1];
this.form.append('photo',
uri: uri,
name: `photo.$fileType`,
type: `image/$fileType`,
);
this.setState(
image: uri
);
catch (e)
console.log( e );
alert('Upload failed, sorry :(');
finally
this.setState(
uploading: false
);
;
我在它的 34 版本中使用 expo 和 react-native,我已经尝试到 36 版本,但它没有做任何事情,错误只是从 ABI34 更改为 ABI36。
错误只是偶尔发生,这是奇怪的部分,它似乎是随机发生的,但通常,在发送一张图像后,下一张会返回错误,虽然有时它会在我第一次尝试发送时发生.
有人知道这个错误吗,我很难找到答案。
编辑:我尝试在 expo 上创建新的空应用程序,代码和包适用于新应用程序,但它似乎无法与所有内容一起使用。
【问题讨论】:
【参考方案1】:我已经找到解决方法了。
在将数据发送到服务器之前,我使用this.setState()
在应用程序中启动动画,因此用户在发送数据后无法按下按钮(为此,我使用了组件'react -native-loading-spinner-overlay')。
出于某种我无法辨别的原因,将框架中的状态更新为发送带有图像的表单会导致此错误。为了解决这个问题,我简单地将向服务器发送数据的方法放在 setTimeout
上,并让它在发送前等待 100 毫秒。
【讨论】:
以上是关于在 expo/react-native 中发送图像时随机出现“错误处理请求正文”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 上减小 expo/react-native 应用程序的大小
如何在 expo/react-native 应用程序中添加自定义节点模块?
对象不是 Expo(react-native) 应用程序中的函数