private void AssertRequestOptionCall(Action<IRequestOptions> options, Action<HttpRequestMessage> assertions, string uri = "http://whatever") { var requestMessage = new HttpRequestMessage(HttpMethod.Get, uri); var requestOptions = new RequestOptions(); options(requestOptions); requestOptions.ApplyRequestModifications(requestMessage); assertions(requestMessage); }
private void AssertRequestOptionCall(Action <IRequestOptions> options, Action <HttpRequestMessage> assertions, string uri = "http://whatever") { var requestMessage = new HttpRequestMessage(HttpMethod.Get, uri); var requestOptions = new RequestOptions(); options(requestOptions); requestOptions.ApplyRequestModifications(requestMessage); assertions(requestMessage); }
private async Task<string> SendHttpRequestAsync(ISerializationContextProvider serializationContextProvider, string uri, string httpMethod, object requestBodyEntity, TypeSpec requestBodyBaseType, RequestOptions options) { byte[] requestBytes = null; HttpResponseMessage response = null; if (requestBodyEntity != null) { requestBytes = this.serializerFactory .GetSerializer(serializationContextProvider) .SerializeToBytes(requestBodyEntity, new SerializeOptions { ExpectedBaseType = requestBodyBaseType }); } var request = new HttpRequestMessage(new System.Net.Http.HttpMethod(httpMethod), uri); string responseString = null; Exception thrownException = null; try { if (options != null) options.ApplyRequestModifications(request); AddDefaultHeaders(request); const string jsonContentType = "application/json; charset=utf-8"; request.Headers.Add("Accept", jsonContentType); if (requestBytes != null) { var requestContent = new ByteArrayContent(requestBytes); requestContent.Headers.ContentType = MediaTypeHeaderValue.Parse(jsonContentType); request.Content = requestContent; } using (Profiler.Step("client: " + request.Method + " " + request.RequestUri)) { response = await WebClient.SendAsync(request, CancellationToken.None); } if (response.Content != null) { responseString = await response.Content.ReadAsStringAsync(); if (responseString.Length == 0) responseString = null; } if ((int)response.StatusCode >= 400) { var gotJsonResponseBody = responseString != null && response.Content.Headers.ContentType.MediaType == "application/json"; var responseObject = gotJsonResponseBody ? Deserialize(responseString, null, serializationContextProvider) : null; throw WebClientException.Create(this.typeMapper, request, response, responseObject, null); } } catch (Exception ex) { thrownException = ex; throw; } finally { var eh = RequestCompleted; if (eh != null) { // Since request content has been disposed at this point we recreate it.. if (request.Content != null) { var nonDisposedContent = new ByteArrayContent(requestBytes); nonDisposedContent.Headers.CopyHeadersFrom(request.Content.Headers); request.Content = nonDisposedContent; } eh(this, new ClientRequestLogEventArgs(request, response, thrownException)); } } return responseString; }