using System; using System.Collections.Generic; using System.Linq; using System.Net.Http.Json; using System.Text; using System.Threading.Tasks; namespace HttpClientStudy.UnitTest { public class HttpClientTest { public static HttpClient GetHttpClient = new HttpClient() { BaseAddress = new Uri("http://localhost:5189"), }; private readonly ITestOutputHelper _logger; public HttpClientTest(ITestOutputHelper outputHelper) { _logger = outputHelper; } #region Get请求中使用请求体:强烈不推荐这种方法 /// /// Get请求中使用请求体 /// 注意:服务器要设置(配置KestrelServerOptions AllowSynchronousIO值为true) /// /// [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"); requestMessage.Content = new FormUrlEncodedContent(formData); var response = await GetHttpClient.SendAsync(requestMessage); response.EnsureSuccessStatusCode(); var responseText = await response.Content.ReadAsStringAsync(); _logger.WriteLine(responseText); } /// /// Post模型绑定对比 /// [Fact] public async Task PostFormData_Test() { var formData = new List> { new KeyValuePair("Id", "1"), new KeyValuePair("Name", "伍佰") }; HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, "/api/AdvancedGet/PostFormData"); requestMessage.Content = new FormUrlEncodedContent(formData); var response = await GetHttpClient.SendAsync(requestMessage); response.EnsureSuccessStatusCode(); var responseText = await response.Content.ReadAsStringAsync(); _logger.WriteLine(responseText); } /// /// Post模型绑定对比 /// [Fact] public async Task PostJsonData_Test() { var vm = new AdvancedGetModel() { Id=2, Name="伍佰"}; var response = await GetHttpClient.PostAsJsonAsync("/api/AdvancedGet/PostJsonData", vm); response.EnsureSuccessStatusCode(); var responseText = await response.Content.ReadAsStringAsync(); _logger.WriteLine(responseText); } #endregion } }