• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - React-Native NetInfo 总是返回 No Internet connection

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:09:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我目前正在尝试在我的一个 react-native 应用程序中实现 Web 服务调用,并使用 react-native-web-service-handler调用 GetPost Web API。

请看下面我的函数。

getRandomUserList() {    
  WebServiceHandler.get(APIConstants.baseURL, null, null)
      .then((val)=>{
          console.log('callapi: ' + JSON.stringify(val))
          this.setState({data:val})
      })
      .catch((error) => console.log('callapi:'+ JSON.stringify(error)));
}

APIConstants 如下,

const APIConstants = {
    baseURL:"https://randomuser.me/api/?results=50"
}

我是这样调用这个函数的,

componentDidMount() {
  this.getRandomUserList();
}

请找到WebServiceHandler.get函数如下,

static get(url: String, headerParam: Object, parameter: Object){
  console.log('WebServiceHandler:Initiating GET request');

  return new Promise(function(success, failed){
    NetInfo.isConnected.fetch().done((isConnected) => {
          console.log('WebServiceHandler: Network Connectivity status: ' + isConnected);
          if (!isConnected) {
            failed({name:'503',message:"No Internet connection"});
          }else {
            let URL = url + WebServiceHandler.parameter(parameter);
            console.log('URL:-' + URL);
            fetch(URL,{
              method: 'get',
              'headers': WebServiceHandler.header(headerParam)
            })
            .then(function(response) {
              console.log(response.status);
                if (!response.ok) {
                  throw {name:response.status,message:"http request failed", value:response.json()};
                }
                return response.json();

            })
            .then(function(jsonResponse) {
              console.log('************************ HTTP GET Succes ************************ ');
              success(jsonResponse);
            })
            .catch(function(err) {
                console.log('************************ HTTP GET Failed **************************');
                  failed(err)
            });
          }
        });
  });
}

它总是返回以下输出,

WebServiceHandler: Network Connectivity status: false
App.js:50 callapi:{"name":"503","message":"No Internet connection"}

我在 Wi-Fi 和宽带连接上尝试了很多,但没有成功。

经过一番研究,我发现this article on Github并实现了这个功能。

static isNetworkConnected() {
  if (Platform.OS === 'ios') {
    return new Promise(resolve => {
      const handleFirstConnectivityChangeIOS = isConnected => {
        NetInfo.isConnected.removeEventListener('connectionChange', handleFirstConnectivityChangeIOS);
        resolve(isConnected);
      };
      NetInfo.isConnected.addEventListener('connectionChange', handleFirstConnectivityChangeIOS);
    });
  }
  return NetInfo.isConnected.getConnectionInfo();
}

但它仍然给我同样的错误信息。谁能帮我解决这个问题?

仅供引用。您可以找到相同的 question在这里没有答案。

谢谢。



Best Answer-推荐答案


终于得到答案了,变通办法是这样的,

static isNetworkConnected() {
      return NetInfo.getConnectionInfo().then(reachability => {
        if (reachability === 'unknown') {
          return new Promise(resolve => {
            const handleFirstConnectivityChangeIOS = isConnected => {
              NetInfo.isConnected.removeEventListener('connectionChange', handleFirstConnectivityChangeIOS);
              resolve(isConnected);
            };
            NetInfo.isConnected.addEventListener('connectionChange', handleFirstConnectivityChangeIOS);
          });
        }
        reachability = reachability.toLowerCase();
        return (reachability !== 'none' && reachability !== 'unknown');
      });
}

我们应该实现 getConnectionInfo() 因为 fetch() 是不推荐使用的方法。

或者

NetInfo.getConnectionInfo() 更新 NetInfo.isConnected.fetch()。这也可以。

谢谢。

关于ios - React-Native NetInfo 总是返回 No Internet connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572815/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap