|
|
|
@ -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
|
|
|
|
@ -37,7 +41,7 @@ namespace HttpClientStudy.UnitTest
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
@ -49,6 +53,105 @@ namespace HttpClientStudy.UnitTest
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[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);
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Post模型绑定对比
|
|
|
|
|
/// </summary>
|
|
|
|
@ -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);
|
|
|
|
|
|
|
|
|
|