首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用流到HttpContent的Json

使用流到HttpContent的Json
EN

Stack Overflow用户
提问于 2018-07-20 12:55:48
回答 1查看 2.2K关注 0票数 1

我有一个类MyData,它可以使用Json.Net JsonSerializer.Serialize(TextWriter, object)来序列化Json。我想通过HttpClient.PostAsync将这些数据(作为json)发送到web服务。

因为将json转换为string,然后以StringContent的形式发送它(很可能),所以我想使用流来完成它。

我找到了类StreamContent,它在构造函数中接受流。将json序列化为流也是可能的。所以我试了一下:

代码语言:javascript
复制
MyData data = ...; // already filled
string uri = ...;  // already filled
HttpClient client = new HttpClient();
JsonSerializer serializer = new JsonSerializer();
using (MemoryStream ms = new MemoryStream())
{
    using (StreamWriter sw = new StreamWriter(ms))
    using (JsonWriter jw = new JsonTextWriter(sw))
    {
        serializer.Serialize(sw, data);
        ms.Flush();
        ms.Position = 0;
    }
    HttpResponseMessage response = client.PostAsync(uri, new StreamContent(ms)).Result;
}

但是,运行这段代码给出了行HttpResponseMessage response = ...中的两个异常

  1. HttpRequestException:将内容复制到流中时出错。
  2. ObjectDisposedException:无法访问关闭的流。

我做错什么了?

EN

回答 1

Stack Overflow用户

发布于 2018-07-20 13:52:49

如果将对象序列化为MemoryStream,则整个JSON数据将写入缓冲区中,因此,仅将其序列化为字符串和使用StringContent没有显著的性能效益。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51443042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档