/// <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); } }
/// <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); } }