【发布时间】:2017-09-02 04:15:46
【问题描述】:
我已经编写了我的第一个 ASP.NET Core Web API 服务器。路由正在工作并且正在发送/接收。我想发送一个原始字节数组以响应 Get 并且我想绕过任何序列化(以及我的 WPF 客户端中的任何反序列化)。例如,在我的服务器中:
[HttpGet("api/data")]
public Byte[] GetData()
{
Byte[] data = new Byte[]{1, 2, 3, 4, 5};
return data; // No JSON, BSON or anything else...just my array. Is it done this way?
}
在我的 WPF 客户端中,我想使用 HttpClient 类来接收数组 - 不需要反序列化:
// Assume an instantiated and initialized HttpClient object called "httpCLient"
HttpResponseMessage response = httpClient.GetAsync("/api/data").Result;
// Now what?
我在互联网上搜索过,但没有找到这方面的例子,而且我自己也无法弄清楚。有人可以告诉我这是怎么做的吗?
更新:我相信客户端 Byte[] 检索可以通过“HttpContent.ReadAsByteArrayAsync()”完成,如下所示:Convert HttpContent into byte[]。但是,我仍然不确定如何从 ASP.NET Core Web API 端发送原始(未序列化)Byte[]。
【问题讨论】:
-
谢谢科林。我认为在客户端我可以通过以下方式检索 Byte[]: Byte[] data = httpResponseMessage.Content.ReadAsByteArrayAsync().Result;但是,我无法对此进行测试,因为我仍然不确定如何从服务器发送原始 Byte[]。
-
stackoverflow.com/questions/23884182/… 检查 Luaan 的答案。使用 ByteArrayContent
-
谢谢马库斯。不幸的是,Luaan 的回答是使用“HttpResponseMessage”类。 .NET Core 似乎不支持这种类型......至少我在文档中找不到它的提及。
-
@LKeene 您只需向 System.Net.Http NuGet package 添加一个引用即可在您的 ASP.NET 核心项目中访问它。
标签: c# asp.net-core