Xamarin.forms Xamarin形式';s HttpWebRequest没有超时属性?
我正在使用HttpWebRequest进行HTTP调用,我发现它没有Timeout属性 例如:Xamarin.forms Xamarin形式';s HttpWebRequest没有超时属性?,xamarin.forms,Xamarin.forms,我正在使用HttpWebRequest进行HTTP调用,我发现它没有Timeout属性 例如: HttpWebRequest request = WebRequest.Create(aWebUrl) as HttpWebRequest; request.ContentType = "application/json"; request.Method = "GET"; 谢谢我想你可以看看 有一个Utils可以帮助您检查异步调用是否超时。我认为您可以
HttpWebRequest request = WebRequest.Create(aWebUrl) as HttpWebRequest;
request.ContentType = "application/json";
request.Method = "GET";
谢谢我想你可以看看 有一个Utils可以帮助您检查异步调用是否超时。我认为您可以将其用于Web请求
namespace MvvmHelpers
{
/// <summary>
/// Extension Utils
/// </summary>
public static class Utils
{
/// <summary>
/// Task extension to add a timeout.
/// </summary>
/// <returns>The task with timeout.</returns>
/// <param name="task">Task.</param>
/// <param name="timeoutInMilliseconds">Timeout duration in Milliseconds.</param>
/// <typeparam name="T">The 1st type parameter.</typeparam>
public async static Task<T> WithTimeout<T>(this Task<T> task, int timeoutInMilliseconds)
{
var retTask = await Task.WhenAny(task, Task.Delay(timeoutInMilliseconds))
.ConfigureAwait(false);
if (retTask is Task<T>)
return task.Result;
return default(T);
}
/// <summary>
/// Task extension to add a timeout.
/// </summary>
/// <returns>The task with timeout.</returns>
/// <param name="task">Task.</param>
/// <param name="timeout">Timeout Duration.</param>
/// <typeparam name="T">The 1st type parameter.</typeparam>
public static Task<T> WithTimeout<T>(this Task<T> task, TimeSpan timeout) =>
WithTimeout(task, (int)timeout.TotalMilliseconds);
}
}
名称空间MvvmHelpers
{
///
///扩展Utils
///
公共静态类Utils
{
///
///任务扩展以添加超时。
///
///任务已超时。
///任务。
///超时持续时间(毫秒)。
///第一个类型参数。
带超时的公共异步静态任务(此任务任务,int timeoutin毫秒)
{
var retTask=wait Task.WhenAny(Task,Task.Delay(timeoutin毫秒))
.配置等待(错误);
如果(retTask是任务)
返回任务。结果;
返回默认值(T);
}
///
///任务扩展以添加超时。
///
///任务已超时。
///任务。
///超时持续时间。
///第一个类型参数。
带超时的公共静态任务(此任务任务,TimeSpan超时)=>
WithTimeout(任务,(int)timeout.total毫秒);
}
}
你可以在这段视频中找到解释
否则,您可以使用具有“Timeout”属性的HttpClient
我强烈建议纯粹因为HttpClient基于异步任务的风格而使用它。我还想指出,上面提到的任务扩展无法与HttpWebRequest一起使用,因为这些方法是基于IAsyncResult的,而不是任务实现。