Использование JSON.NET для сериализации объекта в поток ответов HttpClient
Привет, я работаю над проектом, в котором необходимо отправить потенциально огромный JSON некоторого объекта через HttpClient, 10-20 мегабайт JSON - типичный размер. Чтобы сделать это эффективно, я хочу использовать потоки, как с Json.Net для сериализации объекта, так и потоки для публикации данных с помощью HttpClient.
проблемаВот фрагмент для сериализации с Json.net, чтобы работать с потоками, Json.net ожидает поток, в который он будет записывать:
public static void Serialize( object value, Stream writeOnlyStream )
{
StreamWriter writer = new StreamWriter(writeOnlyStream); <-- Here Json.net expects the stream to be already created
JsonTextWriter jsonWriter = new JsonTextWriter(writer);
JsonSerializer ser = new JsonSerializer();
ser.Serialize(jsonWriter, value );
jsonWriter.Flush();
}
В то время как HttpClient ожидает поток, из которого он будет читать:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:54359/");
var response = await client.PostAsync("/api/snapshot", new StreamContent(readOnlyStream)); <-- The same thing here, HttpClient expects the stream already to exist
...
}
Таким образом, в конечном итоге это означает, что оба класса ожидают, что поток будет создан кем-то другим, но нет потоков ни для Json.Net, ни для HttpClient. Таким образом, проблема, кажется, может быть решена путем реализации потока, который будет перехватывать запросы на чтение, сделанные для потока только для чтения, и выдавать записи по запросу из потока только для записи.
ВопросВозможно, кто-то уже сталкивался с такой ситуацией и, возможно, нашел уже реализованное решение этой проблемы. Если это так, пожалуйста, поделитесь им со мной,
Заранее спасибо!