Xamarin.Forms iOS 当设备在线时抛出 NSURLErrorDomain "internet connection offline"
Xamarin.Forms iOS throwing NSURLErrorDomain "internet connection offline" when device is online
当调用来自 HTTP 管理器的请求时,应用程序会抛出一个 NSURL 错误,指出互联网连接已离线。
Foundation.NSErrorException: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
这只是偶尔发生,每次发生时设备都可以访问互联网。
在尝试调试解决方案时,client.GetAsync
的其余服务调用似乎没有 return 响应。
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;
}
}
预期的结果是应用程序应该成功地进行调用并且return期望的结果,而不是应用程序提示互联网连接处于离线状态。
还有其他人看到过这种行为吗?如果有,你解决了吗?
据报道这是 Visual Studio 预览版的一个问题。降级回最新的稳定版本已经解决了这个问题。
https://github.com/xamarin/xamarin-macios/issues/6762#issuecomment-524016733
我找到了这个 Visual Studio 2019 年预览版已经很久了。在不同的地方查找此错误。我读到“检查您正在使用的 URL 并确保它是正确的”并且认为它当然是正确的。我错了。所以这是一个友情提示。检查你的骄傲和 URL :) 别担心我犯了同样的错误。
当调用来自 HTTP 管理器的请求时,应用程序会抛出一个 NSURL 错误,指出互联网连接已离线。
Foundation.NSErrorException: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
这只是偶尔发生,每次发生时设备都可以访问互联网。
在尝试调试解决方案时,client.GetAsync
的其余服务调用似乎没有 return 响应。
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;
}
}
预期的结果是应用程序应该成功地进行调用并且return期望的结果,而不是应用程序提示互联网连接处于离线状态。
还有其他人看到过这种行为吗?如果有,你解决了吗?
据报道这是 Visual Studio 预览版的一个问题。降级回最新的稳定版本已经解决了这个问题。
https://github.com/xamarin/xamarin-macios/issues/6762#issuecomment-524016733
我找到了这个 Visual Studio 2019 年预览版已经很久了。在不同的地方查找此错误。我读到“检查您正在使用的 URL 并确保它是正确的”并且认为它当然是正确的。我错了。所以这是一个友情提示。检查你的骄傲和 URL :) 别担心我犯了同样的错误。