Пример #1
0
        /// <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;
        }
Пример #2
0
 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);
 }
Пример #3
0
        /// <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();
        }