@@ -8,7 +8,7 @@ interface RequestInput {
88
99const quote = ( value : string ) => JSON . stringify ( value )
1010
11- /** Native HTTP examples preserve request bytes and leave binary responses intact . */
11+ /** Native HTTP examples preserve request bytes and copy response bytes as they arrive . */
1212export function nativeRequestSamples ( { method, url, headers, body, fields } : RequestInput ) {
1313 const goImports = [ 'io' , 'net/http' , 'os' ]
1414 const goBody : string [ ] = [ ]
@@ -100,8 +100,7 @@ ${goHeaders.map((line) => ` ${line}`).join('\n')}
100100 response := must(http.DefaultClient.Do(request))
101101 defer response.Body.Close()
102102 if response.StatusCode >= 400 { panic(response.Status) }
103- result := must(io.ReadAll(response.Body))
104- must(os.Stdout.Write(result))
103+ must(io.Copy(os.Stdout, response.Body))
105104}` ,
106105 } ,
107106 {
@@ -117,9 +116,11 @@ public class Example {
117116 var builder = HttpRequest.newBuilder(URI.create(${ quote ( url ) } ));
118117${ [ ...javaHeaders , ...javaBody ] . map ( ( line ) => ` ${ line } ` ) . join ( '\n' ) }
119118 var request = builder.method(${ quote ( method ) } , ${ javaPayload } ).build();
120- var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofByteArray());
121- if (response.statusCode() >= 400) throw new IllegalStateException("HTTP " + response.statusCode());
122- System.out.write(response.body());
119+ var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofInputStream());
120+ try (var body = response.body()) {
121+ if (response.statusCode() >= 400) throw new IllegalStateException("HTTP " + response.statusCode());
122+ body.transferTo(System.out);
123+ }
123124 }
124125}` ,
125126 } ,
@@ -134,10 +135,9 @@ using System.Text;
134135using var client = new HttpClient();
135136using var request = new HttpRequestMessage(new HttpMethod(${ quote ( method ) } ), ${ quote ( url ) } );
136137${ [ ...csharpBody , ...csharpHeaders ] . join ( '\n' ) }
137- using var response = await client.SendAsync(request);
138+ using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead );
138139response.EnsureSuccessStatusCode();
139- var result = await response.Content.ReadAsByteArrayAsync();
140- await Console.OpenStandardOutput().WriteAsync(result);` ,
140+ await response.Content.CopyToAsync(Console.OpenStandardOutput());` ,
141141 } ,
142142 ]
143143}
0 commit comments