main
wanggaofeng 9 months ago
parent 2cda148ffe
commit fbc08e2866

@ -10,9 +10,10 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="xunit" Version="2.4.2" /> <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5"> <PackageReference Include="xunit" Version="2.6.5" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
</PackageReference> </PackageReference>

@ -2,9 +2,13 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Security.Cryptography.Xml;
using System.Text; using System.Text;
using System.Text.Unicode;
using System.Threading.Tasks; using System.Threading.Tasks;
using Newtonsoft.Json;
namespace HttpClientStudy.UnitTest namespace HttpClientStudy.UnitTest
{ {
public class HttpClientTest public class HttpClientTest
@ -16,7 +20,7 @@ namespace HttpClientStudy.UnitTest
private readonly ITestOutputHelper _logger; private readonly ITestOutputHelper _logger;
public HttpClientTest(ITestOutputHelper outputHelper) public HttpClientTest(ITestOutputHelper outputHelper)
{ {
_logger = outputHelper; _logger = outputHelper;
} }
@ -30,23 +34,122 @@ namespace HttpClientStudy.UnitTest
/// <returns></returns> /// <returns></returns>
[Fact] [Fact]
public async Task GetWithBody_Test() public async Task GetWithBody_Test()
{ {
var formData = new List<KeyValuePair<string, string>> var formData = new List<KeyValuePair<string, string>>
{ {
new KeyValuePair<string, string>("param1", "value1"), new KeyValuePair<string, string>("param1", "value1"),
new KeyValuePair<string, string>("param2", "value2") new KeyValuePair<string, string>("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<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Id", "1"),
new KeyValuePair<string, string>("Name", "BeiJing")
};
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "/api/AdvancedGet/GetWithFormBody");
requestMessage.Content = new FormUrlEncodedContent(formData); requestMessage.Content = new FormUrlEncodedContent(formData);
var response = await GetHttpClient.SendAsync(requestMessage); var response = await GetHttpClient.SendAsync(requestMessage);
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
var responseText = await response.Content.ReadAsStringAsync(); var responseText = await response.Content.ReadAsStringAsync();
_logger.WriteLine(responseText); _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);
} }
/// <summary> /// <summary>
@ -79,7 +182,7 @@ namespace HttpClientStudy.UnitTest
[Fact] [Fact]
public async Task PostJsonData_Test() 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); var response = await GetHttpClient.PostAsJsonAsync("/api/AdvancedGet/PostJsonData", vm);

Loading…
Cancel
Save