Пример #1
0
        /// <summary>
        /// Send the httpWebProxyRequest to the remote server and return the response
        /// </summary>
        /// <param name="httpWebRequestParameters"> </param>
        /// <returns>Response data received from the remote server </returns>
        public string Request(HttpWebRequestParameters httpWebRequestParameters)
        {
            var httpWebProxyRequest = _httpWebProxyRequestFactory.Create(httpWebRequestParameters);
            SetupDelegates(httpWebProxyRequest);

            if (httpWebRequestParameters.Method == HttpMethod.Post || httpWebRequestParameters.Method == HttpMethod.Put)
            {
                ProcessRequest(httpWebProxyRequest);
            }

            var httpWebResponse = _httpWebResponseFactory.Create(httpWebProxyRequest.HttpWebRequestBase.GetResponse() as HttpWebResponse);

            return ProcessReponse(httpWebResponse, httpWebProxyRequest);
        }
Пример #2
0
        /// <summary>
        /// Send the httpWebProxyRequest to the remote server asynchronously and specify a Response callback
        /// </summary>
        /// <param name="httpWebRequestParameters"> </param>
        public void BeginRequest(HttpWebRequestParameters httpWebRequestParameters)
        {
            var httpWebProxyRequest = _httpWebProxyRequestFactory.Create(httpWebRequestParameters);
            SetupDelegates(httpWebProxyRequest);

            if (httpWebRequestParameters.Method == HttpMethod.Post || httpWebRequestParameters.Method == HttpMethod.Put)
            {
                httpWebProxyRequest.HttpWebRequestBase.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), httpWebProxyRequest);
            }
            else
            {
                httpWebProxyRequest.HttpWebRequestBase.BeginGetResponse(new AsyncCallback(GetResponseCallback), httpWebProxyRequest);
            }
        }
 private void Setup(HttpWebRequestParameters httpWebRequestParameters, HttpWebRequestBase httpWebRequest)
 {
     httpWebRequest.Method = httpWebRequestParameters.Method.ToString().ToUpperInvariant();
     httpWebRequest.ContentType = httpWebRequestParameters.ContentType;
     if (httpWebRequestParameters.Method == HttpMethod.Post || httpWebRequestParameters.Method == HttpMethod.Put)
     {
         httpWebRequest.ContentLength = httpWebRequestParameters.ContentLength;
     }
     httpWebRequest.ReadWriteTimeout = httpWebRequestParameters.ReadWriteTimeout;
     httpWebRequest.Timeout = httpWebRequestParameters.Timeout;
     httpWebRequest.TransferEncoding = httpWebRequestParameters.TransferEncoding;
     httpWebRequest.AllowAutoRedirect = false;
     httpWebRequest.KeepAlive = true;
     httpWebRequest.Proxy = null;
 }
        public HttpWebProxyRequest Create(HttpWebRequestParameters httpWebRequestParameters)
        {
            byte[] requestBytes = httpWebRequestParameters.RequestBytes;
            if (requestBytes == null && !string.IsNullOrEmpty(httpWebRequestParameters.RequestData))
            {
                requestBytes = _httpWebProcessor.GetRequestBytesFromRequestData(httpWebRequestParameters.RequestData, httpWebRequestParameters.Encoding);
            }
            var httpWebProxyRequest = new HttpWebProxyRequest()
            {
                Method = httpWebRequestParameters.Method,
                RequestBytes = requestBytes,
                ProcessRequestStream = httpWebRequestParameters.ProcessRequestStream,
                ProcessResponseStream = httpWebRequestParameters.ProcessResponseStream,
                ResponseCallback = httpWebRequestParameters.ResponseCallback
            };

            var httpWebRequest = _httpWebRequestFactory.Create(httpWebRequestParameters.RequestUri);
            Setup(httpWebRequestParameters, httpWebRequest);
            httpWebProxyRequest.HttpWebRequestBase = httpWebRequest;

            return httpWebProxyRequest;
        }
Пример #5
0
        public void Initialize()
        {
            _httpWebRequestFactory = new HttpWebRequestFactory();
            _streamReaderFactory = new StreamReaderFactory();
            _httpWebProcessor = new HttpWebProcessor(_streamReaderFactory);
            _httpWebProxyRequestFactory = new HttpWebProxyRequestFactory(_httpWebRequestFactory, _httpWebProcessor);
            _httpWebResponseFactory = new HttpWebResponseFactory();
            _httpWebProxy = new HttpWebProxy(_httpWebProxyRequestFactory, _httpWebResponseFactory, _httpWebProcessor);

            _httpWebRequestParametersGet = new HttpWebRequestParameters()
            {
                RequestUri = new Uri("http://httpbin.org/get"),
                ContentType = "*/*",
                Method = HttpMethod.Get,
                ReadWriteTimeout = 30000,
                Timeout = 30000,
                ResponseCallback = ResponseCallbackGet
            };

            var encoding = new ASCIIEncoding();
            _httpWebRequestParametersPost = new HttpWebRequestParameters()
            {
                RequestUri = new Uri("http://httpbin.org/post"),
                RequestData = POST_DATA_TEST,
                Encoding = encoding,
                ContentLength = POST_DATA_TEST.Length,
                ContentType = "*/*",
                Method = HttpMethod.Post,
                ReadWriteTimeout = 30000,
                Timeout = 30000,
                ResponseCallback = ResponseCallbackPost
            };

            _manualResetEventGet = new ManualResetEvent(false);
            _manualResetEventPost = new ManualResetEvent(false);
        }
 private void Setup(HttpWebRequestParameters httpWebRequestParameters, HttpWebRequestBase httpWebRequest)
 {
     httpWebRequest.Method = httpWebRequestParameters.Method.ToString().ToUpperInvariant();
     httpWebRequest.ContentType = httpWebRequestParameters.ContentType;
     httpWebRequest.AllowAutoRedirect = false;
 }