diff options
author | bruno <bruno.eberhard@pop.ch> | 2015-04-06 21:01:54 +0200 |
---|---|---|
committer | bruno <bruno.eberhard@pop.ch> | 2015-04-06 21:01:54 +0200 |
commit | acfbf75e8fabb74b7e77027e3ab28ceae69462d3 (patch) | |
tree | 28568a5db2d4bad95ca3fef283c9debb67a288a0 /websocket/src | |
parent | ab6feae737b3038532d057e87fd83c58bad3b3cc (diff) | |
download | nanohttpd-acfbf75e8fabb74b7e77027e3ab28ceae69462d3.tar.gz |
If payload string contained a control character (newline) the result
binary payload ended with a 0 character. This caused me troubles because
I parsed Json payload with chrome browser. Chrome doesn't accept an 0
character at the end in JSON.parse()
Diffstat (limited to 'websocket/src')
-rw-r--r-- | websocket/src/main/java/fi/iki/elonen/WebSocketFrame.java | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/websocket/src/main/java/fi/iki/elonen/WebSocketFrame.java b/websocket/src/main/java/fi/iki/elonen/WebSocketFrame.java index 0e209df..089b0b4 100644 --- a/websocket/src/main/java/fi/iki/elonen/WebSocketFrame.java +++ b/websocket/src/main/java/fi/iki/elonen/WebSocketFrame.java @@ -4,12 +4,8 @@ import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.ByteBuffer; -import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; import java.util.Arrays; import java.util.List; @@ -279,20 +275,17 @@ public class WebSocketFrame { // --------------------------------ENCODING-------------------------------- public static final Charset TEXT_CHARSET = Charset.forName("UTF-8"); - public static final CharsetDecoder TEXT_DECODER = TEXT_CHARSET.newDecoder(); - public static final CharsetEncoder TEXT_ENCODER = TEXT_CHARSET.newEncoder(); - public static String binary2Text(byte[] payload) throws CharacterCodingException { - return TEXT_DECODER.decode(ByteBuffer.wrap(payload)).toString(); + return new String(payload, TEXT_CHARSET); } public static String binary2Text(byte[] payload, int offset, int length) throws CharacterCodingException { - return TEXT_DECODER.decode(ByteBuffer.wrap(payload, offset, length)).toString(); + return new String(payload, offset, length, TEXT_CHARSET); } public static byte[] text2Binary(String payload) throws CharacterCodingException { - return TEXT_ENCODER.encode(CharBuffer.wrap(payload)).array(); + return payload.getBytes(TEXT_CHARSET); } @Override |