@@ -288,53 +288,6 @@ public void hugeHeaders(String scheme) throws Exception {
288
288
}
289
289
}
290
290
291
-
292
- @ Test ()
293
- public void utf8HeaderValues () throws Exception {
294
- String scheme = "http" ;
295
- String city = "São Paulo" ;
296
-
297
- HTTPHandler handler = (req , res ) -> {
298
- res .setHeader (Headers .ContentType , "text/plain" );
299
- res .setHeader (Headers .ContentLength , "" + ExpectedResponse .length ());
300
- res .setHeader ("X-Response-Header" , city );
301
- res .setStatus (200 );
302
-
303
- try {
304
- OutputStream outputStream = res .getOutputStream ();
305
- outputStream .write (ExpectedResponse .getBytes ());
306
- outputStream .close ();
307
- } catch (IOException e ) {
308
- throw new RuntimeException (e );
309
- }
310
- };
311
-
312
- // Java HTTPClient only supports ASCII header values, so send it directly
313
- try (HTTPServer ignore = makeServer (scheme , handler ).start (); Socket sock = new Socket ("127.0.0.1" , 4242 )) {
314
- var os = sock .getOutputStream ();
315
- var is = sock .getInputStream ();
316
- os .write ("""
317
- GET /api/status HTTP/1.1\r
318
- Host: localhost:42\r
319
- X-Foo: São Paulo\r
320
- \r
321
- """ .getBytes (StandardCharsets .UTF_8 ));
322
- os .flush ();
323
-
324
- var resp = new String (is .readAllBytes (), StandardCharsets .UTF_8 );
325
-
326
- assertEquals (resp , """
327
- HTTP/1.1 200 \r
328
- content-length: 16\r
329
- content-type: text/plain\r
330
- connection: keep-alive\r
331
- x-response-header: São Paulo\r
332
- \r
333
- {"version":"42"}""" );
334
- }
335
- }
336
-
337
-
338
291
@ Test
339
292
public void keepAliveTimeout () {
340
293
AtomicBoolean called = new AtomicBoolean (false );
@@ -834,6 +787,51 @@ public void unicode(String scheme) throws Exception {
834
787
}
835
788
}
836
789
790
+ @ Test (dataProvider = "schemes" )
791
+ public void utf8HeaderValues (String scheme ) throws Exception {
792
+
793
+ String city = "São Paulo" ;
794
+
795
+ HTTPHandler handler = (req , res ) -> {
796
+ res .setHeader (Headers .ContentType , "text/plain" );
797
+ res .setHeader (Headers .ContentLength , "" + ExpectedResponse .length ());
798
+ res .setHeader ("X-Response-Header" , city );
799
+ res .setStatus (200 );
800
+
801
+ try {
802
+ OutputStream outputStream = res .getOutputStream ();
803
+ outputStream .write (ExpectedResponse .getBytes ());
804
+ outputStream .close ();
805
+ } catch (IOException e ) {
806
+ throw new RuntimeException (e );
807
+ }
808
+ };
809
+
810
+ // Java HTTPClient only supports ASCII header values, so send it directly
811
+ try (HTTPServer ignore = makeServer (scheme , handler ).start (); Socket sock = new Socket ("127.0.0.1" , 4242 )) {
812
+ var os = sock .getOutputStream ();
813
+ var is = sock .getInputStream ();
814
+ os .write ("""
815
+ GET /api/status HTTP/1.1\r
816
+ Host: localhost:42\r
817
+ X-Request-Header: São Paulo\r
818
+ \r
819
+ """ .getBytes (StandardCharsets .UTF_8 ));
820
+ os .flush ();
821
+
822
+ var resp = new String (is .readAllBytes (), StandardCharsets .UTF_8 );
823
+
824
+ assertEquals (resp , """
825
+ HTTP/1.1 200 \r
826
+ content-length: 16\r
827
+ content-type: text/plain\r
828
+ connection: keep-alive\r
829
+ x-response-header: São Paulo\r
830
+ \r
831
+ {"version":"42"}""" );
832
+ }
833
+ }
834
+
837
835
@ Test (dataProvider = "schemes" )
838
836
public void writer (String scheme ) throws Exception {
839
837
HTTPHandler handler = (req , res ) -> {
0 commit comments