private void Send(string method, string url, string body, string contentType, IEnumerable <KeyValuePair <string, string> > headers, Action <HttpResponse> onSuccess, Action <Exception> onException) { var request = new HttpRequestMessage(); request.Method = new System.Net.Http.HttpMethod(method); request.RequestUri = new Uri(url); var bodyBytes = Helper.UTF8NoBom.GetBytes(body); var stream = new MemoryStream(bodyBytes); var content = new StreamContent(stream); content.Headers.ContentType = new MediaTypeHeaderValue(contentType); content.Headers.ContentLength = bodyBytes.Length; request.Content = content; if (headers != null) { foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } } var state = new ClientOperationState(request, onSuccess, onException); _client.SendAsync(request).ContinueWith(RequestSent(state)); }
private void Send(string method, string url, string body, string contentType, IEnumerable <KeyValuePair <string, string> > headers, TimeSpan timeout, Action <HttpResponse> onSuccess, Action <Exception> onException) { var request = (HttpWebRequest)WebRequest.Create(url); var bodyBytes = Helper.UTF8NoBom.GetBytes(body); request.Method = method; request.KeepAlive = true; request.Pipelined = true; request.ContentLength = bodyBytes.Length; request.ContentType = contentType; if (headers != null) { foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } } var state = new ClientOperationState(request, onSuccess, onException) { InputStream = new MemoryStream(bodyBytes) }; var result = request.BeginGetRequestStream(GotRequestStream, state); ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, TimeoutCallback, request, (int)timeout.TotalMilliseconds, true); }
private Action<Task<string>> ResponseRead(ClientOperationState state) { return task => { try { state.Response.Body = task.Result; state.Dispose(); state.OnSuccess(state.Response); } catch (Exception ex) { state.Dispose(); state.OnError(ex); } }; }
private Action<Task<HttpResponseMessage>> RequestSent(ClientOperationState state) { return task => { try { var responseMsg = task.Result; state.Response = new HttpResponse(responseMsg); responseMsg.Content.ReadAsStringAsync() .ContinueWith(ResponseRead(state)); } catch (Exception ex) { state.Dispose(); state.OnError(ex); } }; }
private void Receive(string method, string url, IEnumerable<KeyValuePair<string, string>> headers, Action<HttpResponse> onSuccess, Action<Exception> onException) { var request = new HttpRequestMessage(); request.Method = new System.Net.Http.HttpMethod(method); request.RequestUri = new Uri(url); if (headers != null) { foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } } var state = new ClientOperationState(request, onSuccess, onException); _client.SendAsync(request).ContinueWith(RequestSent(state)); }
private void Send(string method, string url, string body, string contentType, Action <HttpResponse> onSuccess, Action <Exception> onException) { var request = (HttpWebRequest)WebRequest.Create(url); var bodyBytes = Encoding.UTF8.GetBytes(body); request.Method = method; request.KeepAlive = false;//TODO TR : hangs on mono request.Pipelined = false; request.ContentLength = bodyBytes.Length; request.ContentType = contentType; var state = new ClientOperationState(request, onSuccess, onException) { InputStream = new MemoryStream(bodyBytes) }; request.BeginGetRequestStream(GotRequestStream, state); }
public void Post(string url, string body, string contentType, Action<HttpResponse> onSuccess, Action<Exception> onException) { Ensure.NotNull(url, "url"); Ensure.NotNull(body, "body"); Ensure.NotNull(contentType, "contentType"); Ensure.NotNull(onSuccess, "onSuccess"); Ensure.NotNull(onException, "onException"); var request = (HttpWebRequest)WebRequest.Create(url); var bodyBytes = Encoding.UTF8.GetBytes(body); request.Method = HttpMethod.Post; request.KeepAlive = false;//TODO TR : hangs on mono request.Pipelined = false; request.ContentLength = bodyBytes.Length; request.ContentType = contentType; var state = new ClientOperationState(request, onSuccess, onException) { InputStream = new MemoryStream(bodyBytes) }; request.BeginGetRequestStream(GotRequestStream, state); }
public void Post(string url, string body, string contentType, Action <HttpResponse> onSuccess, Action <Exception> onException) { Ensure.NotNull(url, "url"); Ensure.NotNull(body, "body"); Ensure.NotNull(contentType, "contentType"); Ensure.NotNull(onSuccess, "onSuccess"); Ensure.NotNull(onException, "onException"); var request = (HttpWebRequest)WebRequest.Create(url); var bodyBytes = Encoding.UTF8.GetBytes(body); request.Method = HttpMethod.Post; request.KeepAlive = false;//TODO TR : hangs on mono request.Pipelined = false; request.ContentLength = bodyBytes.Length; request.ContentType = contentType; var state = new ClientOperationState(request, onSuccess, onException) { InputStream = new MemoryStream(bodyBytes) }; request.BeginGetRequestStream(GotRequestStream, state); }
private void Send(string method, string url, string body, string contentType, IEnumerable<KeyValuePair<string, string>> headers, TimeSpan timeout, Action<HttpResponse> onSuccess, Action<Exception> onException) { var request = (HttpWebRequest)WebRequest.Create(url); var bodyBytes = Helper.UTF8NoBom.GetBytes(body); request.Method = method; request.KeepAlive = true; request.Pipelined = true; request.ContentLength = bodyBytes.Length; request.ContentType = contentType; if (headers != null) { foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } } var state = new ClientOperationState(request, onSuccess, onException) { InputStream = new MemoryStream(bodyBytes) }; var result = request.BeginGetRequestStream(GotRequestStream, state); ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, TimeoutCallback, request, (int)timeout.TotalMilliseconds, true); }
private void Send(string method, string url, string body, string contentType, IEnumerable<KeyValuePair<string, string>> headers, Action<HttpResponse> onSuccess, Action<Exception> onException) { var request = new HttpRequestMessage(); request.Method = new System.Net.Http.HttpMethod(method); request.RequestUri = new Uri(url); var bodyBytes = Helper.UTF8NoBom.GetBytes(body); var stream = new MemoryStream(bodyBytes); var content = new StreamContent(stream); content.Headers.ContentType = new MediaTypeHeaderValue(contentType); content.Headers.ContentLength = bodyBytes.Length; request.Content = content; if(headers != null) { foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } } var state = new ClientOperationState(request, onSuccess, onException); _client.SendAsync(request).ContinueWith(RequestSent(state)); }
private void Receive(string method, string url, IEnumerable<KeyValuePair<string, string>> headers, Action<HttpResponse> onSuccess, Action<Exception> onException) { var request = new HttpRequestMessage(); #if __MonoCS__ request.Headers.Add("Keep-alive", "false"); #endif request.Method = new System.Net.Http.HttpMethod(method); request.RequestUri = new Uri(url); if(headers != null) { foreach(var header in headers) { request.Headers.Add(header.Key, header.Value); } } var state = new ClientOperationState(request, onSuccess, onException); _client.SendAsync(request).ContinueWith(RequestSent(state)); }
private Action<Task<string>> ResponseRead(ClientOperationState state) { return task => { try { state.Response.Body = task.Result; state.Dispose(); state.OnSuccess(state.Response); } catch(Exception ex) { state.Dispose(); state.OnError(ex); } }; }
private void Send(string method, string url, string body, string contentType, Action<HttpResponse> onSuccess, Action<Exception> onException) { var request = (HttpWebRequest)WebRequest.Create(url); var bodyBytes = Encoding.UTF8.GetBytes(body); request.Method = method; request.KeepAlive = true; request.Pipelined = true; request.ContentLength = bodyBytes.Length; request.ContentType = contentType; var state = new ClientOperationState(request, onSuccess, onException) { InputStream = new MemoryStream(bodyBytes) }; request.BeginGetRequestStream(GotRequestStream, state); }