我有一个类MyData,它可以使用Json.Net JsonSerializer.Serialize(TextWriter, object)来序列化Json。我想通过HttpClient.PostAsync将这些数据(作为json)发送到web服务。
因为将json转换为string,然后以StringContent的形式发送它(很可能),所以我想使用流来完成它。
我找到了类StreamContent,它在构造函数中接受流。将json序列化为流也是可能的。所以我试了一下:
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 = ...中的两个异常
我做错什么了?
发布于 2018-07-20 13:52:49
如果将对象序列化为MemoryStream,则整个JSON数据将写入缓冲区中,因此,仅将其序列化为字符串和使用StringContent没有显著的性能效益。
https://stackoverflow.com/questions/51443042
复制相似问题