c# - 如何将 Stream 转换为对象

标签 c# asp.net-web-api

如何将流转换为对象。

我有一个 WebApi

[HttpGet]
    public AttachmentViewModel DownloadAttachementDetailsByIds(int attachementDetaisId)
    {
        AttachmentViewModel attachment = new AttachmentViewModel
        {
            AttachmentName = "Observe",
            AttachmentType = ".c",
            AttachmentDetailsID = 123,
            AttachmentDetails = Encoding.ASCII.GetBytes("some contant"),
            AttachmentSize = 12 //some valid size
        };

        return attachment;
    }

现在我调用这个 GET 方法如下:

 WebClient webClient = new WebClient();
 Stream stream = webClient.OpenRead(documentRepositoryApiUrl + "DocRepoApi/DownloadAttachementDetailsById?attachementDetaisId=97");

嗯,我的调用成功了,但是一旦我将所有数据放入流中,我如何才能再次将它们全部检索为同一个 AttachmentViewModel 对象。如果 API 返回任何错误如何读取它。

最佳答案

您可以使用DownloadString来自 WebClient 的方法并将其反序列化到您的模型中(例如使用 JSON.NET)。

WebClient webClient = new WebClient();
var data = webClient.DownloadString(url);
var deserialized = JsonConvert.DeserializeObject<AttachmentViewModel>(data);

如果发生错误,将会抛出相应的WebException

关于c# - 如何将 Stream 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28106534/

相关文章:

c# - 为什么我的客户端服务器套接字连接不断断开

c# - 像队列这样的数据结构可以访问最后一个元素

c# - 自定义 AuthenticationHandler 在 Asp.Net Core 3 中不起作用

asp.net-web-api - HttpControllerDispatcher 中的异常

c# - ASP.NET web api 无法获取 application/x-www-form-urlencoded HTTP POST

javascript - C# Web API 中的 JSON 数据无法正确解析

c# - 每个请求的 WebApi、Autofac、System.Web.Http.Filters.ActionFilterAttribute 实例

c# - 在其构造函数中从 session 中设置项目的模拟对象

c# - 在 ASP.NET WebApi 2 中自定义不记名 token JSON 结果

c# - EF4 在不进行选择的情况下更新表中所有行的值