@@ -288,53 +288,6 @@ public void hugeHeaders(String scheme) throws Exception {
288288 }
289289 }
290290
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-
338291 @ Test
339292 public void keepAliveTimeout () {
340293 AtomicBoolean called = new AtomicBoolean (false );
@@ -834,6 +787,51 @@ public void unicode(String scheme) throws Exception {
834787 }
835788 }
836789
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+
837835 @ Test (dataProvider = "schemes" )
838836 public void writer (String scheme ) throws Exception {
839837 HTTPHandler handler = (req , res ) -> {
0 commit comments