Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions src/HTTPie/Implement/RequestExecutor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -280,12 +280,9 @@ private async Task InvokeStreamingRequest(HttpClient httpClient, HttpContext htt
{
await using var stream = await responseMessage.Content.ReadAsStreamAsync(cancellationToken);

// Get encoding from Content-Type header or default to UTF-8
var encoding = responseMessage.Content.Headers.ContentType?.CharSet is { } charset
? System.Text.Encoding.GetEncoding(charset)
: System.Text.Encoding.UTF8;

using var reader = new StreamReader(stream, encoding);
// Use UTF-8 encoding for AOT compatibility (Encoding.GetEncoding is not AOT-safe)
// Trade-off: responses using non-UTF-8 encodings may not display correctly in streaming mode
using var reader = new StreamReader(stream, Encoding.UTF8);

var bodyBuilder = new StringBuilder();
string? line;
Expand All @@ -295,9 +292,9 @@ private async Task InvokeStreamingRequest(HttpClient httpClient, HttpContext htt
bodyBuilder.AppendLine(line);
}

// Store the body for potential later use
// Store the streamed content (re-encoded as UTF-8 bytes for consistency)
responseModel.Body = bodyBuilder.ToString();
responseModel.Bytes = encoding.GetBytes(responseModel.Body);
responseModel.Bytes = Encoding.UTF8.GetBytes(responseModel.Body);
}
else
{
Expand Down