diff --git a/HttpClientStudy.UnitTest/HttpClientTest.cs b/HttpClientStudy.UnitTest/HttpClientTest.cs
index 54aa7ae..6d9ca2f 100644
--- a/HttpClientStudy.UnitTest/HttpClientTest.cs
+++ b/HttpClientStudy.UnitTest/HttpClientTest.cs
@@ -15,31 +15,63 @@ namespace HttpClientStudy.UnitTest
_logger = outputHelper;
}
+ #region Get请求中使用请求体:强烈不推荐这种方法
+
///
/// Get请求中使用请求体
/// 注意:服务器要设置(配置KestrelServerOptions AllowSynchronousIO值为true)
///
///
[Fact]
- public async Task GetWithBodyTestAsync()
+ public async Task GetWithBody_Test()
{
HttpClient httpClient = new HttpClient();
-
var formData = new List>
{
new KeyValuePair("param1", "value1"),
new KeyValuePair("param2", "value2")
};
- HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post,"http://localhost:5189/api/AdvancedGet/GetWithBody");
+ HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get,"http://localhost:5189/api/AdvancedGet/GetWithBody");
requestMessage.Content = new FormUrlEncodedContent(formData);
var response = await httpClient.SendAsync(requestMessage);
response.EnsureSuccessStatusCode();
+ var responseText = await response.Content.ReadAsStringAsync();
+ _logger.WriteLine(responseText);
}
+
+ ///
+ /// Post模型绑定对比
+ ///
+ ///
+ [Fact]
+ public async Task PostDemo_Test()
+ {
+ HttpClient httpClient = new HttpClient();
+
+ var formData = new List>
+ {
+ new KeyValuePair("param1", "value1"),
+ new KeyValuePair("param2", "value2")
+ };
+
+ HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost:5189/api/AdvancedGet/PostDemo");
+
+ requestMessage.Content = new FormUrlEncodedContent(formData);
+
+
+ var response = await httpClient.SendAsync(requestMessage);
+ response.EnsureSuccessStatusCode();
+ var responseText = await response.Content.ReadAsStringAsync();
+ _logger.WriteLine(responseText);
+
+ }
+
+ #endregion
}
}
diff --git a/HttpClientStudy.WebApp/Controllers/AdvancedGetController.cs b/HttpClientStudy.WebApp/Controllers/AdvancedGetController.cs
index d18a85e..e672c88 100644
--- a/HttpClientStudy.WebApp/Controllers/AdvancedGetController.cs
+++ b/HttpClientStudy.WebApp/Controllers/AdvancedGetController.cs
@@ -25,24 +25,37 @@ namespace HttpClientStudy.WebApp.Controllers
///
/// 带请求体数据的Get请求
/// (asp.net 3开始,默认不允许Get有Body)
+ /// 注意:不能直接使用模型绑定接收数据,而应以流的方式读取请求体中的数据
///
///
[HttpGet]
- [HttpPost]
public async Task GetWithBodyAsync()
{
+ var requestBody = "";
+
+ //以流方式读取请求体中的数据
if (Request.ContentLength>0)
{
using (var reader = new StreamReader(Request.Body, Encoding.UTF8, detectEncodingFromByteOrderMarks: false, bufferSize: 1024, leaveOpen: true))
{
- var body = await reader.ReadToEndAsync();
+ requestBody = await reader.ReadToEndAsync();
// 现在你有了请求体,可以按照你的需求处理它
}
}
+ var result = BaseResultUtil.Success(requestBody);
+ return Ok(result);
+ }
- var reslut = BaseResultUtil.Success("操作成功");
- return Ok(reslut);
+ ///
+ /// Post测试方法
+ ///
+ ///
+ [HttpGet]
+ public IActionResult PostDemo()
+ {
+ var result = BaseResultUtil.Success("操作成功");
+ return Ok(result);
}
}
}