.net-core - HttpResponseMessage 发送和接收列表或数组
问题描述
使用最新的 System.Net.Http.Json 有一些方法可以帮助进行序列化/反序列化。我想使用 HttpResponseMessage 内容来保存我的响应对象。它们似乎可以很好地存储在服务器上,但是当我在客户端获取它们时,内容并不是我所期望的。注入了很多额外的数据,我不知道如何通过额外的元数据传递一些数据。
我不确定发生了什么..如果我尝试使用:
Content = new StringContent("test content")
在客户端我得到“测试内容”,但我得到了这个:
内容:{"version":"1.1","content":{"headers":[{"key":"Content-Type","value":["text/plain; charset=utf-8"]} ]},"statusCode":200,"reasonPhrase":"Retrieved Forecasts","headers":[],"trailingHeaders":[],"requestMessage":null,"isSuccessStatusCode":true}
这是我的 Blazor 代码:
客户:
protected override async Task OnInitializedAsync()
{
try
{
//forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast");
HttpResponseMessage httpResponse = await Http.GetAsync("WeatherForecast");
if (httpResponse.IsSuccessStatusCode)
{
Console.WriteLine("Response Weather");
//forecasts = (await httpResponse.Content.ReadFromJsonAsync<WeatherForecast[]>()).ToList<WeatherForecast>();
Console.WriteLine("Content: " + await httpResponse.Content.ReadAsStringAsync());
//forecasts = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherForecast[]>(await httpResponse.Content.ReadAsStringAsync()).ToList<WeatherForecast>(); // Doesn't work
forecasts = await httpResponse.Content.ReadFromJsonAsync<WeatherForecast[]>(); //Doesn't work
}
}
catch (AccessTokenNotAvailableException exception)
{
exception.Redirect();
}
}
服务器:
[HttpGet]
public async Task<HttpResponseMessage> Get()
{
var rng = new Random();
WeatherForecast[] weather = Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
HttpResponseMessage message = new HttpResponseMessage
{
StatusCode = OK,
ReasonPhrase = "Retrieved Weather",
//Content = new StringContent("test content")
//Content = JsonContent.Create<WeatherForecast[]>(weather)
//Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(weather))
};
string test = await message.Content.ReadAsStringAsync(); // This looks correct!
return message;
}
解决方案
推荐阅读
- node.js - TypeScript 中 createReadStream 的类型应该是什么?
- symfony - 在 symfony 中更改继承(加入)类中的默认标识列名称
- c++ - 带有模板参数的 C++ 大括号初始化
- python - 如何处理 Azure Machine Learning Studio 中数据集的频繁变化?
- java - 如何从 Linux 的输出中删除(过滤掉)特定的 Java Stack-Traces?
- java - 如何通过配置文件激活/停用 Spring Security
- azure-cosmosdb - Cosmos Db 中容器级别的事务
- powershell - Foreach,最后一个条件不需要为它找到的每个虚拟机“确定”
- mysql - Sakila 模式显示所有表的 NULL 值?
- kotlin-coroutines - Kotlin 协程的长任务