Request.CreateResponse 与 response.Content?
Request.CreateResponse versus response.Content?
我的代码是
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(
JsonConvert.SerializeObject(data),
Encoding.UTF8, "application/json");
return response;
它通过返回一些 json 数据工作正常。
后来我注意到 Request.CreateResponse()
可以接受第二个参数 T value
,其中 value
是 the content of the HTTP response message
。所以我试着把上面三行压缩成一行
return Request.CreateResponse(
HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(data),
Encoding.UTF8, "application/json"));
但它没有按预期工作。它returns
{
"Headers": [
{
"Key": "Content-Type",
"Value": [
"application/json; charset=utf-8"
]
}
]
}
我是不是理解错了Request.CreateResponse()
的第二个参数?
Did I misunderstand the second parameter of Request.CreateResponse()
是的,你有。第二个参数只是值本身。您将 StringContent
作为 T value
传递,而不是让 CreateResponse
使用您传递的正确内容类型为您序列化它。您看不到数据的原因是 CreateResponse
可能不了解如何正确序列化 StringContent
.
类型的对象
您只需要:
return Request.CreateResponse(HttpStatusCode.OK, data, "application/json"));
我的代码是
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(
JsonConvert.SerializeObject(data),
Encoding.UTF8, "application/json");
return response;
它通过返回一些 json 数据工作正常。
后来我注意到 Request.CreateResponse()
可以接受第二个参数 T value
,其中 value
是 the content of the HTTP response message
。所以我试着把上面三行压缩成一行
return Request.CreateResponse(
HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(data),
Encoding.UTF8, "application/json"));
但它没有按预期工作。它returns
{
"Headers": [
{
"Key": "Content-Type",
"Value": [
"application/json; charset=utf-8"
]
}
]
}
我是不是理解错了Request.CreateResponse()
的第二个参数?
Did I misunderstand the second parameter of Request.CreateResponse()
是的,你有。第二个参数只是值本身。您将 StringContent
作为 T value
传递,而不是让 CreateResponse
使用您传递的正确内容类型为您序列化它。您看不到数据的原因是 CreateResponse
可能不了解如何正确序列化 StringContent
.
您只需要:
return Request.CreateResponse(HttpStatusCode.OK, data, "application/json"));