Xamarin.forms Xamarin形式';s HttpWebRequest没有超时属性?

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进行HTTP调用,我发现它没有Timeout属性

例如:

        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的,而不是任务实现。