public Task <INetworkResponseMessage> HttpPostAsync(TargetUri targetUri, HttpContent content, NetworkRequestOptions options) { if (targetUri is null) { throw new ArgumentNullException(nameof(targetUri)); } if (content is null) { throw new ArgumentNullException(nameof(content)); } return(Task.Run <INetworkResponseMessage>(async() => { using (var handler = GetHttpMessageHandler(targetUri, options)) using (var httpClient = GetHttpClient(targetUri, handler, options)) { var httpMessage = await httpClient.PostAsync(targetUri, content); var response = new NetworkResponseMessage(httpMessage); if (httpMessage.Content != null) { await response.SetContent(httpMessage.Content); } return response; } })); }
public Task <INetworkResponseMessage> HttpHeadAsync(TargetUri targetUri, NetworkRequestOptions options) { if (targetUri is null) { throw new ArgumentNullException(nameof(targetUri)); } return(Task.Run <INetworkResponseMessage>(async() => { using (var httpMessageHandler = GetHttpMessageHandler(targetUri, options)) using (var httpClient = GetHttpClient(targetUri, httpMessageHandler, options)) using (var requestMessage = new HttpRequestMessage(HttpMethod.Head, targetUri)) { // Copy the headers from the client into the message because the framework // will not do this when using `SendAsync`. foreach (var header in httpClient.DefaultRequestHeaders) { requestMessage.Headers.Add(header.Key, header.Value); } var httpMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead); var response = new NetworkResponseMessage(httpMessage); if (httpMessage.Content != null) { await response.SetContent(httpMessage.Content); } return response; } })); }