@Override protected String parse(Http.RequestHeader request, ByteString bytes) throws Exception { // Per RFC 7231: // The default charset of ISO-8859-1 for text media types has been removed; the default is now // whatever the media type definition says. // Per RFC 6657: // The default "charset" parameter value for "text/plain" is unchanged from [RFC2046] and remains as "US-ASCII". // https://tools.ietf.org/html/rfc6657#section-4 Charset charset = request.charset().map(Charset::forName).orElse(US_ASCII); try { CharsetDecoder decoder = charset.newDecoder().onMalformedInput(CodingErrorAction.REPORT); return decoder.decode(bytes.toByteBuffer()).toString(); } catch (CharacterCodingException e) { String msg = String.format("Parser tried to parse request %s as text body with charset %s, but it contains invalid characters!", request.id(), charset); logger.warn(msg); return bytes.decodeString(charset); // parse and return with unmappable characters. } catch (Exception e) { String msg = "Unexpected exception while parsing text/plain body"; logger.error(msg, e); return bytes.decodeString(charset); } } }
@Override protected String parse(Http.RequestHeader request, ByteString bytes) throws Exception { // Per RFC 7231: // The default charset of ISO-8859-1 for text media types has been removed; the default is now // whatever the media type definition says. // Per RFC 6657: // The default "charset" parameter value for "text/plain" is unchanged from [RFC2046] and remains as "US-ASCII". // https://tools.ietf.org/html/rfc6657#section-4 Charset charset = request.charset().map(Charset::forName).orElse(US_ASCII); try { CharsetDecoder decoder = charset.newDecoder().onMalformedInput(CodingErrorAction.REPORT); return decoder.decode(bytes.toByteBuffer()).toString(); } catch (CharacterCodingException e) { String msg = String.format("Parser tried to parse request %s as text body with charset %s, but it contains invalid characters!", request.id(), charset); logger.warn(msg); return bytes.decodeString(charset); // parse and return with unmappable characters. } catch (Exception e) { String msg = "Unexpected exception while parsing text/plain body"; logger.error(msg, e); return bytes.decodeString(charset); } } }
@Override protected String parse(Http.RequestHeader request, ByteString bytes) throws Exception { // Per RFC 7231: // The default charset of ISO-8859-1 for text media types has been removed; the default is now // whatever the media type definition says. // Per RFC 6657: // The default "charset" parameter value for "text/plain" is unchanged from [RFC2046] and remains as "US-ASCII". // https://tools.ietf.org/html/rfc6657#section-4 Charset charset = request.charset().map(Charset::forName).orElse(US_ASCII); try { CharsetDecoder decoder = charset.newDecoder().onMalformedInput(CodingErrorAction.REPORT); return decoder.decode(bytes.toByteBuffer()).toString(); } catch (CharacterCodingException e) { String msg = String.format("Parser tried to parse request %s as text body with charset %s, but it contains invalid characters!", request.id(), charset); logger.warn(msg); return bytes.decodeString(charset); // parse and return with unmappable characters. } catch (Exception e) { String msg = "Unexpected exception while parsing text/plain body"; logger.error(msg, e); return bytes.decodeString(charset); } } }
@Override public String getCharacterEncoding() { return playDelegate.charset().orElseGet(() -> ofNullable(RequestAdapter.getCharsetFromContentType(getContentType())) .orElse(getServletContext().getRequestCharacterEncoding())); }
Charset charset = request.charset().map(Charset::forName).orElse(US_ASCII); return decode.apply(charset).right.orElseGet( () -> {
Charset charset = request.charset().map(Charset::forName).orElse(US_ASCII); return decode.apply(charset).right.orElseGet( () -> {
Charset charset = request.charset().map(Charset::forName).orElse(US_ASCII); return decode.apply(charset).right.orElseGet( () -> {
@Override protected Map<String, String[]> parse(Http.RequestHeader request, ByteString bytes) throws Exception { String charset = request.charset().orElse("UTF-8"); String urlEncodedString = bytes.decodeString("UTF-8"); return FormUrlEncodedParser.parseAsJavaArrayValues(urlEncodedString, charset); } }
@Override protected Document parse(Http.RequestHeader request, ByteString bytes) throws Exception { return XML.fromInputStream(bytes.iterator().asInputStream(), request.charset().orElse(null)); } }
@Override protected Document parse(Http.RequestHeader request, ByteString bytes) throws Exception { return XML.fromInputStream(bytes.iterator().asInputStream(), request.charset().orElse(null)); } }
@Override protected Map<String, String[]> parse(Http.RequestHeader request, ByteString bytes) throws Exception { String charset = request.charset().orElse("UTF-8"); String urlEncodedString = bytes.decodeString("UTF-8"); return FormUrlEncodedParser.parseAsJavaArrayValues(urlEncodedString, charset); } }
@Override protected Map<String, String[]> parse(Http.RequestHeader request, ByteString bytes) throws Exception { String charset = request.charset().orElse("UTF-8"); String urlEncodedString = bytes.decodeString("UTF-8"); return FormUrlEncodedParser.parseAsJavaArrayValues(urlEncodedString, charset); } }
@Override protected Document parse(Http.RequestHeader request, ByteString bytes) throws Exception { return XML.fromInputStream(bytes.iterator().asInputStream(), request.charset().orElse(null)); } }