diff --git a/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj b/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj index 01720e0..4fc9de3 100644 --- a/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj +++ b/HttpClientStudy.UnitTest/HttpClientStudy.UnitTest.csproj @@ -10,9 +10,10 @@ - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/HttpClientStudy.UnitTest/HttpClientTest.cs b/HttpClientStudy.UnitTest/HttpClientTest.cs index c641d54..bfa717b 100644 --- a/HttpClientStudy.UnitTest/HttpClientTest.cs +++ b/HttpClientStudy.UnitTest/HttpClientTest.cs @@ -2,9 +2,13 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http.Json; +using System.Security.Cryptography.Xml; using System.Text; +using System.Text.Unicode; using System.Threading.Tasks; +using Newtonsoft.Json; + namespace HttpClientStudy.UnitTest { public class HttpClientTest @@ -16,7 +20,7 @@ namespace HttpClientStudy.UnitTest private readonly ITestOutputHelper _logger; - public HttpClientTest(ITestOutputHelper outputHelper) + public HttpClientTest(ITestOutputHelper outputHelper) { _logger = outputHelper; } @@ -30,23 +34,122 @@ namespace HttpClientStudy.UnitTest /// [Fact] public async Task GetWithBody_Test() - { + { var formData = new List> { new KeyValuePair("param1", "value1"), new KeyValuePair("param2", "value2") }; - HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get,"/api/AdvancedGet/GetWithBody"); + HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "/api/AdvancedGet/GetWithBody"); + + requestMessage.Content = new FormUrlEncodedContent(formData); + + + var response = await GetHttpClient.SendAsync(requestMessage); + response.EnsureSuccessStatusCode(); + var responseText = await response.Content.ReadAsStringAsync(); + _logger.WriteLine(responseText); + + } + + [Fact] + public async Task GetWithFormBody_Test() + { + var formData = new List> + { + new KeyValuePair("Id", "1"), + new KeyValuePair("Name", "BeiJing") + }; + HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "/api/AdvancedGet/GetWithFormBody"); requestMessage.Content = new FormUrlEncodedContent(formData); - var response = await GetHttpClient.SendAsync(requestMessage); response.EnsureSuccessStatusCode(); var responseText = await response.Content.ReadAsStringAsync(); _logger.WriteLine(responseText); + } + + [Fact] + public async Task GetWithFormBody_MultipartFormData_Test() + { + + var multiFormDataContent = new MultipartFormDataContent(); + multiFormDataContent.Add(new StringContent("1", Encoding.UTF8, System.Net.Mime.MediaTypeNames.Multipart.FormData), "Id"); + multiFormDataContent.Add(new StringContent("BeiJing", Encoding.UTF8, System.Net.Mime.MediaTypeNames.Multipart.FormData), "Name"); + + + HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "/api/AdvancedGet/GetWithFormBody"); + requestMessage.Content = multiFormDataContent; + + var response = await GetHttpClient.SendAsync(requestMessage); + response.EnsureSuccessStatusCode(); + var responseText = await response.Content.ReadAsStringAsync(); + _logger.WriteLine(responseText); + } + + [Fact] + public async Task GetWithJsonBody_Test() + { + //因为get方法,不能使用System.Net.Http.Json中的扩展方法 + var vm = new AdvancedGetModel() { Id=3, Name = "张三" }; + var content = new StringContent(JsonConvert.SerializeObject(vm), Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json); + + var requestMessage = new HttpRequestMessage(HttpMethod.Get,"/api/AdvancedGet/GetWithJsonBody") + { + Content = content, + }; + + var response = await GetHttpClient.SendAsync(requestMessage); + + response.EnsureSuccessStatusCode(); + + var responseText = await response.Content.ReadAsStringAsync(); + _logger.WriteLine(responseText); + } + + [Fact] + public async Task GetWithBodyByCopyStream_Test() + { + //因为get方法,不能使用System.Net.Http.Json中的扩展方法 + var vm = new AdvancedGetModel() { Id = 3, Name = "张三" }; + var content = new StringContent(JsonConvert.SerializeObject(vm), Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json); + + var requestMessage = new HttpRequestMessage(HttpMethod.Get, "/api/AdvancedGet/GetWithBodyByCopyStream") + { + Content = content, + }; + + + var response = await GetHttpClient.SendAsync(requestMessage); + + response.EnsureSuccessStatusCode(); + + var responseText = await response.Content.ReadAsStringAsync(); + _logger.WriteLine(responseText); + } + + [Fact] + public async Task GetWithBodyByEnableBuffering_Test() + { + //因为get方法,不能使用System.Net.Http.Json中的扩展方法 + var vm = new AdvancedGetModel() { Id = 3, Name = "张三" }; + var content = new StringContent(JsonConvert.SerializeObject(vm), Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json); + + var requestMessage = new HttpRequestMessage(HttpMethod.Get, "/api/AdvancedGet/GetWithBodyByEnableBuffering") + { + Content = content, + }; + + + var response = await GetHttpClient.SendAsync(requestMessage); + + response.EnsureSuccessStatusCode(); + + var responseText = await response.Content.ReadAsStringAsync(); + _logger.WriteLine(responseText); } /// @@ -79,7 +182,7 @@ namespace HttpClientStudy.UnitTest [Fact] public async Task PostJsonData_Test() { - var vm = new AdvancedGetModel() { Id=2, Name="伍佰"}; + var vm = new AdvancedGetModel() { Id = 2, Name = "伍佰" }; var response = await GetHttpClient.PostAsJsonAsync("/api/AdvancedGet/PostJsonData", vm);