.net HttpClient在设置Timeout.Infinite后仍超时
我正在使用.net HttpClient在设置Timeout.Infinite后仍超时,.net,xamarin,xamarin.forms,dotnet-httpclient,.net,Xamarin,Xamarin.forms,Dotnet Httpclient,我正在使用HttpClient从服务器获取Xamarin表单中的数据使用以下代码 public Task<HttpResponseMessage> sendData(String url,String jsonData) { using (var client = new HttpClient()) { var jsonContent = new StringContent(jsonData, System.Tex
HttpClient
从服务器获取Xamarin表单中的数据
使用以下代码
public Task<HttpResponseMessage> sendData(String url,String jsonData)
{
using (var client = new HttpClient())
{
var jsonContent = new StringContent(jsonData, System.Text.Encoding.UTF8, "application/json");
client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);
client.BaseAddress = new Uri(baseAddress);
return client.PostAsync(new Uri(url, UriKind.Relative), jsonContent);
}
}
尝试使用System.Threading.Timeout命名空间中的InfiniteTimeSpan
client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;
我正在我的Xamarin项目中使用它,它似乎工作得很好。尝试使用System.Threading.Timeout命名空间中的InfiniteTimeSpan
client.Timeout = System.Threading.Timeout.InfiniteTimeSpan;
我正在我的Xamarin项目中使用它,它似乎工作得很好。我尝试了以下Android和iOS代码,它似乎工作得很好,在使用webservice获取数据时,可以在socket上稍等一会儿 在
Xamarin.Android
中使用以下代码,并使用DependencyService
public HttpClientHandler GetHttpClientHandler()
{
Xamarin.Android.Net.AndroidClientHandler http = new Xamarin.Android.Net.AndroidClientHandler();
http.ReadTimeout = TimeSpan.FromMinutes(5.0);
return http;
}
在Xamarin.iOS
中使用以下代码,并使用DependencyService
HttpMessageHandler IHttpHandler.GetHttpHandler()
{
NSUrlSessionConfiguration sessionConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;
sessionConfig.TimeoutIntervalForRequest = 300;
sessionConfig.TimeoutIntervalForResource = 300;
sessionConfig.WaitsForConnectivity = true;
NSUrlSessionHandler sessionHandler = new NSUrlSessionHandler(sessionConfig);
return (sessionHandler);
}
注意:如果是iOS,它将返回HttpMessageHandler
在Xamarin.Forms中的用法
HttpClient client = new HttpClient(DependencyService.Get<IHttpClientHandler>().GetHttpClient());
HttpClient=newhttpclient(DependencyService.Get().GetHttpClient());
然而,这里有一个问题,在iOS的情况下,如果应用程序使用HttpClient获取数据,并且如果用户在iPhone中按下锁定按钮锁定屏幕,则服务会立即中断,并引发连接中断,插座也会关闭。如果有人能找到任何解决方案,那么请随意发布我已经尝试了以下Android和iOS代码,它似乎可以工作,并且在使用webservice获取数据时可以在socket上稍等一会儿
在Xamarin.Android
中使用以下代码,并使用DependencyService
public HttpClientHandler GetHttpClientHandler()
{
Xamarin.Android.Net.AndroidClientHandler http = new Xamarin.Android.Net.AndroidClientHandler();
http.ReadTimeout = TimeSpan.FromMinutes(5.0);
return http;
}
在Xamarin.iOS
中使用以下代码,并使用DependencyService
HttpMessageHandler IHttpHandler.GetHttpHandler()
{
NSUrlSessionConfiguration sessionConfig = NSUrlSessionConfiguration.DefaultSessionConfiguration;
sessionConfig.TimeoutIntervalForRequest = 300;
sessionConfig.TimeoutIntervalForResource = 300;
sessionConfig.WaitsForConnectivity = true;
NSUrlSessionHandler sessionHandler = new NSUrlSessionHandler(sessionConfig);
return (sessionHandler);
}
注意:如果是iOS,它将返回HttpMessageHandler
在Xamarin.Forms中的用法
HttpClient client = new HttpClient(DependencyService.Get<IHttpClientHandler>().GetHttpClient());
HttpClient=newhttpclient(DependencyService.Get().GetHttpClient());
然而,这里有一个问题,在iOS的情况下,如果应用程序使用HttpClient获取数据,并且如果用户在iPhone中按下锁定按钮锁定屏幕,则服务会立即中断,并引发连接中断,插座也会关闭。如果有人能找到解决方案,请随时发布这是安卓还是iOS上的问题?您使用的是AndroidNativeClient吗?它发生在两个平台上,m在xamarin表单中使用它,而不是使用AndroidNativeClient检查这是在用户发送请求时使用大量块时处理的,我的问题是response@Hunt对于iOS使用:这是安卓还是iOS上的问题?您使用的是AndroidNativeClient吗?它发生在两个平台上,m在xamarin表单中使用它,而不是使用AndroidNativeClient检查这是在用户发送请求时使用大量块时处理的,我的问题是response@Hunt对于iOS使用:我也尝试了相同的选项client.Timeout=Timeout.InfiniteTimeSpan
但是没有Luckki也尝试了相同的选项client.Timeout=Timeout.InfiniteTimeSpan
但是没有luckThanks@Hunt发布此消息。感谢@Hunt发布此消息。