/// <summary> /// 同步的请求方式 /// </summary> /// <param name="request">请求的参数</param> /// <returns>自定义的Response结果</returns> public IHttpResponse ExecuteSync(IHttpRequest request) { IHttpResponse response = new HttpResponse(); try { if (string.IsNullOrEmpty(request.AddressUrl) || request.HttpMothed == HttpMothed.None) { response.ResponseStatus = ResponseStatus.Error; response.ErrorException = new Exception("对不起,请求出错,请检查参数等设置(地址,请求方式等)!"); return response; } HttpWebRequest webrequest = ConfigureWebRequest(request); SendBodyDataSync(webrequest, request); GetResponse(webrequest, ref response); } catch (Exception ex) { response.ErrorException = ex; response.ResponseStatus = ResponseStatus.Error; } return response; }
public void ExecuteAsync(IHttpRequest request, Action<IHttpResponse> callback) { IHttpResponse response = new HttpResponse(); try { if (string.IsNullOrEmpty(request.AddressUrl) || request.HttpMothed == HttpMothed.None) { response.ResponseStatus = ResponseStatus.Error; response.ErrorException = new Exception("对不起,请求出错,请检查参数等设置(地址,请求方式等)!"); } else { HttpWebRequest webrequest = ConfigureWebRequest(request); SendBodyDataAsyncAndCallBack(webrequest, request, callback); return; } } catch (Exception ex) { response.ErrorException = ex; response.ResponseStatus = ResponseStatus.Error; } if (callback != null) callback(response); }
/// <summary> /// 异步响应处理 /// </summary> /// <param name="result"></param> /// <param name="callback"></param> private void ResponseCallBackAsync(IAsyncResult result, Action<IHttpResponse> callback) { var response = new HttpResponse(); HttpWebResponse web_response = null; try { var webRequest = (HttpWebRequest)result.AsyncState; web_response = webRequest.EndGetResponse(result) as HttpWebResponse; } catch (WebException ex) { if (ex.Status == WebExceptionStatus.RequestCanceled) { throw ex; } if (ex.Response is HttpWebResponse) { response.ResponseStatus = ResponseStatus.ErrorButResponse; web_response = ex.Response as HttpWebResponse; } else { throw ex; } } ExtractResponseData(response, web_response); if (callback != null) { callback(response); } if (web_response != null) web_response.Close(); }