React Native android FormData 响应在 .json() 之后进入 catch 块
React Native android FormData response goes to catch block after .json()
我正在尝试 POST
数据与 FormData
以获得响应,在 iOS 上它按预期工作,但在 android 上它总是去catch
块,我发现原因是 response.json()
错误:[SyntaxError: JSON Parse error: Unrecognized token '']
这是我的代码:
const onAndroidSucks = () => {
setLoading(true);
let formData = new FormData();
formData.append("number", number.replace(/\s+/g, '').substring(4));
formData.append("id", userID);
formData.append("token", userToken);
fetch(ENDPOINT, {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data'
},
body: formData
}).then(response => response.json()).then(response => {
if (response.res === 'no') {
Alert.alert('ჰეჰე');
} else {
setData(response);
}
setLoading(false);
}).catch(err => { Alert.alert(err.message); setLoading(false); } );
};
我不明白这里的实际问题是什么。
原来问题出在 android 上的 okHttp。看起来 okHttp 在没有已知原因的情况下附加了一个空字符串 " "
。
以下是我使用变通方法解决该问题的方法:
}).then(response => response.text())
.then((res) => JSON.parse(res.trim())).then(response => {
我正在尝试 POST
数据与 FormData
以获得响应,在 iOS 上它按预期工作,但在 android 上它总是去catch
块,我发现原因是 response.json()
错误:[SyntaxError: JSON Parse error: Unrecognized token '']
这是我的代码:
const onAndroidSucks = () => {
setLoading(true);
let formData = new FormData();
formData.append("number", number.replace(/\s+/g, '').substring(4));
formData.append("id", userID);
formData.append("token", userToken);
fetch(ENDPOINT, {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data'
},
body: formData
}).then(response => response.json()).then(response => {
if (response.res === 'no') {
Alert.alert('ჰეჰე');
} else {
setData(response);
}
setLoading(false);
}).catch(err => { Alert.alert(err.message); setLoading(false); } );
};
我不明白这里的实际问题是什么。
原来问题出在 android 上的 okHttp。看起来 okHttp 在没有已知原因的情况下附加了一个空字符串 " "
。
以下是我使用变通方法解决该问题的方法:
}).then(response => response.text())
.then((res) => JSON.parse(res.trim())).then(response => {