У меня недавно была проблема с 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
});
}
};
Я использовал expo и response-native в его 34-й версии, я пробовал их до версии 36, но это не так сделать что-нибудь для этого, ошибка просто изменилась с ABI34 на ABI36.
Ошибка возникает только иногда, что является нечетной частью, кажется, что это происходит случайно, но обычно, после отправки одного изображения, следующее возвращается ошибка, хотя иногда это происходит при первой попытке отправки.
Кто-нибудь знает что-нибудь об этой ошибке, мне трудно найти ответы на нее.
Редактировать: Я пытался создавать новые, пустые приложения на выставке, код и пакеты работают на новое приложение, но, похоже, оно не работает вместе со всеми.