/// <summary>
 /// 封装HttpOption的SendAsync扩展方法发送HTTP请求,
 /// 如果遇到WebException异常,就转换成RemoteWebException异常
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="option"></param>
 /// <returns></returns>
 public async static Task <T> GetResultAsync <T>(this HttpOption option)
 {
     try {
         return(await option.SendAsync <T>());
     }
     catch (WebException ex) {
         // 返回一个容易获取异常消息的异常类型
         throw new RemoteWebException(ex);
     }
 }
Beispiel #2
0
 /// <summary>
 /// 封装HttpOption的Send扩展方法发送HTTP请求,并提供失败重试功能。
 /// 如果遇到WebException异常,就转换成RemoteWebException异常
 /// </summary>
 /// <param name="option">HttpOption实例,用于包含HTTP请求的发送参数</param>
 /// <param name="retry">提供一个Retry实例,用于指示如何执行重试。如果此参数为NULL则不启用重试</param>
 /// <returns></returns>
 public async static Task <string> GetResultAsync(this HttpOption option, Retry retry = null)
 {
     try {
         if (retry == null)
         {
             return(await option.SendAsync());
         }
         else
         {
             return(await retry.RunAsync(option.SendAsync));
         }
     }
     catch (WebException ex) {
         // 返回一个容易获取异常消息的异常类型
         throw new RemoteWebException(ex, option.Url);
     }
 }
        /// <summary>
        /// 封装HttpOption的Send扩展方法发送HTTP请求,并提供失败重试功能。
        /// 如果遇到WebException异常,就转换成RemoteWebException异常
        /// </summary>
        /// <param name="option">HttpOption实例,用于包含HTTP请求的发送参数</param>
        /// <param name="retry">提供一个Retry实例,用于指示如何执行重试。如果此参数为NULL将采用默认重试规则</param>
        /// <returns></returns>
        public async static Task <string> GetResultAsync(this HttpOption option, Retry retry)
        {
            if (retry == null)
            {
                retry = GetDefaultRetry();
            }

            try {
                return(await retry.RunAsync <string>(async() => {
                    return await option.SendAsync();
                }));
            }
            catch (WebException ex) {
                // 返回一个容易获取异常消息的异常类型
                throw new RemoteWebException(ex);
            }
        }