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