无法访问 HttpResponseMessage 的 body
Can't access the body of HttpResponseMessage
我目前正在使用 .NET Core Web 应用开发 API 进行测试,但我一直坚持这一点。
实际上,我有这个代码:
namespace CoreWebApp.API.Admin
{
[Route("api/country")]
public class CountryController : Controller
{
// GET: api/country
[HttpGet]
public HttpResponseMessage Get()
{
List<Country> countries = Shared.Database.SqlAction.CountriesTable.GetCountries();
return new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(JsonConvert.SerializeObject(countries), Encoding.UTF8, "application/json") };
}
}
}
我想做的是 return 一个 HttpStatusCode
和一个 HttpContent
。然后我应该在 Postman 上得到它:
[
{
"Name":"France"
},
{
"Name":"Germany"
},
{
"Name":"Spain"
},
....
]
状态码正常 200
但是,我根本不明白这个 body,我得到的是:
{
"version": {
"major": 1,
"minor": 1,
"build": -1,
"revision": -1,
"majorRevision": -1,
"minorRevision": -1
},
"content": {
"headers": [
{
"key": "Content-Type",
"value": [
"application/json; charset=utf-8"
]
}
]
},
"statusCode": 200,
"reasonPhrase": "OK",
"headers": [],
"requestMessage": null,
"isSuccessStatusCode": true
}
我现在搜索了一段时间,仍然无法获取内容中的数据,我做错了什么?这是我的第一个 .NET Core Api,所以如果您有任何建议,请随时提供任何建议:)
感谢您的帮助!
Asp.net 核心不再支持 returning HttpResponseMessage
类型
要解决您的问题,推荐的 return 类型如下
[HttpGet]
public async Task<IActionResult> GeTask()
{
List<Country> countries = Shared.Database.SqlAction.CountriesTable.GetCountries();
return Ok(countries);
}
更多
完整标准 .net 中的 ApiController 看起来像
//
// Summary:
// Creates a System.Web.Http.Results.ResponseMessageResult with the specified response.
//
// Parameters:
// response:
// The HTTP response message.
//
// Returns:
// A System.Web.Http.Results.ResponseMessageResult for the specified response.
protected internal virtual ResponseMessageResult ResponseMessage(HttpResponseMessage response);
.net core 的控制器基础 class 的源代码没有 HttpResponseMessage
的任何定义
我目前正在使用 .NET Core Web 应用开发 API 进行测试,但我一直坚持这一点。
实际上,我有这个代码:
namespace CoreWebApp.API.Admin
{
[Route("api/country")]
public class CountryController : Controller
{
// GET: api/country
[HttpGet]
public HttpResponseMessage Get()
{
List<Country> countries = Shared.Database.SqlAction.CountriesTable.GetCountries();
return new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(JsonConvert.SerializeObject(countries), Encoding.UTF8, "application/json") };
}
}
}
我想做的是 return 一个 HttpStatusCode
和一个 HttpContent
。然后我应该在 Postman 上得到它:
[
{
"Name":"France"
},
{
"Name":"Germany"
},
{
"Name":"Spain"
},
....
]
状态码正常 200
但是,我根本不明白这个 body,我得到的是:
{
"version": {
"major": 1,
"minor": 1,
"build": -1,
"revision": -1,
"majorRevision": -1,
"minorRevision": -1
},
"content": {
"headers": [
{
"key": "Content-Type",
"value": [
"application/json; charset=utf-8"
]
}
]
},
"statusCode": 200,
"reasonPhrase": "OK",
"headers": [],
"requestMessage": null,
"isSuccessStatusCode": true
}
我现在搜索了一段时间,仍然无法获取内容中的数据,我做错了什么?这是我的第一个 .NET Core Api,所以如果您有任何建议,请随时提供任何建议:)
感谢您的帮助!
Asp.net 核心不再支持 returning HttpResponseMessage
类型
要解决您的问题,推荐的 return 类型如下
[HttpGet]
public async Task<IActionResult> GeTask()
{
List<Country> countries = Shared.Database.SqlAction.CountriesTable.GetCountries();
return Ok(countries);
}
更多 完整标准 .net 中的 ApiController 看起来像
//
// Summary:
// Creates a System.Web.Http.Results.ResponseMessageResult with the specified response.
//
// Parameters:
// response:
// The HTTP response message.
//
// Returns:
// A System.Web.Http.Results.ResponseMessageResult for the specified response.
protected internal virtual ResponseMessageResult ResponseMessage(HttpResponseMessage response);
.net core 的控制器基础 class 的源代码没有 HttpResponseMessage