无法识别的令牌'<'反应本机

时间:2018-09-05 20:24:12

标签: react-native

我尝试对邮递员使用时可以正常工作的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

问题是我已经搜索了很多东西,而且似乎找不到解决方法。感谢您的帮助。

1 个答案:

答案 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()函数;抓取的主要批评之一。