【发布时间】: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