我尝试对邮递员使用时可以正常工作的URL进行提取,但是当我尝试对React Native执行相同操作(在不同URL上执行相同的过程之后)时,出现错误,提示JSON Parse错误:未注册的标记“ <”似乎是因为程序无法使用.json()将HTML响应转换为JSON。这是我当前正在运行的代码:
GetMonthData = async () => {
let UserID = await AsyncStorage.getItem('userID');
this.setState({ UserID: UserID })
return fetch('https://guardianes.centeias.net/user/calendar/month', {
method: 'GET',
headers: {
user_id: this.state.UserID,
}})
.then((response) => response.json())
.then((responseJson) => {
this.setState({
isLoading: false,
dataSource: responseJson.data,
}, function(){
});
})
.catch((error) =>{
console.error(error);
});
Here's the error I get while running the app on device
问题是我已经搜索了很多东西,而且似乎找不到解决方法。感谢您的帮助。
答案 0 :(得分:0)
很有可能请求无法获取,因此为什么它返回的HTML代码很可能包含404页面的HTML代码而不是可解析的JSON数据。
使用提取时,请确保检查响应状态是否为OK
类型。
fetch("http://httpstat.us/500")
.then(function(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}).then(function(response) {
console.log("ok");
}).catch(function(error) {
console.log(error);
});
此处有更多信息:https://www.tjvantoll.com/2015/09/13/fetch-and-errors/
请记住,当获取获取的状态代码不正确时,它不会直接进入.catch()
。它进入.then()
函数;抓取的主要批评之一。