【问题标题】:Xamarin.Forms iOS throwing NSURLErrorDomain "internet connection offline" when device is online当设备在线时,Xamarin.Forms iOS 抛出 NSURLErrorDomain“互联网连接离线”
【发布时间】:2019-12-25 00:25:35
【问题描述】:

当从 HTTP 管理器调用请求时,应用程序会抛出一个 NSURL 错误,表明互联网连接处于脱机状态。

Foundation.NSErrorException: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."

这只是偶尔发生,而且每次发生时设备都可以访问互联网。

在尝试调试解决方案时,client.GetAsync 的其余服务调用似乎没有返回响应。

public async Task<T> callGetAsync<T>(string path) {
    using(var client = new HttpClient()) {
        var result = default(T);

        client.BaseAddress = new Uri(url);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        if (App.User.Context != null)
        {
            client.DefaultRequestHeaders.Authorization =
            new AuthenticationHeaderValue("Bearer", App.User.Context.AccessToken);
        }

        HttpResponseMessage response = await client.GetAsync(path);
        if(response.IsSuccessStatusCode) {
            string json = await response.Content.ReadAsStringAsync();
            result = JsonConvert.DeserializeObject<T>(json);
        }
        else {
            Console.WriteLine("Error");
            Analytics.TrackEvent($"API Failure: {path}");
        }
        return result;
    }
}

预期的结果是应用程序应该成功地进行调用并返回所需的结果,而不是应用程序建议互联网连接处于离线状态。

还有其他人看到过这种行为吗?如果有,你解决了吗?

【问题讨论】:

  • 欢迎来到社区,Xammy!我有同样的问题。很奇怪。
  • 您好,您的意思是当设备可以访问互联网时会发生这种情况?当互联网连接时,它不会发生。
  • @JuniorJiang-MSFT 是的,这是在设备可以访问互联网时发生的。
  • @Xammy Okey ,您可以在请求 API 之前检查互联网连接。我认为这是一种相对安全的网络通信方式。

标签: c# ios .net xamarin.forms nsurl


【解决方案1】:

据报道这是 Visual Studio Preview 版本的问题。降级到最新的稳定版本目前已解决此问题。

https://github.com/xamarin/xamarin-macios/issues/6762#issuecomment-524016733

【讨论】:

    【解决方案2】:

    我发现了这一点,而且 Visual Studio 2019 早已不再预览。在不同的地方查找此错误。我读到“检查您正在使用的 URL 并确保它是正确的”并且认为它当然是正确的。我错了。所以这是一个友好的提醒。检查你的骄傲和 URL :) 别担心我犯了同样的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多