我正在尝试通过Android应用中的套接字连接读取JSON-String,但是突然开始获取我无法解释的StringIndexOutOfBoundsException(在程序包名称中屏蔽了一些标识符):
java.lang.StringIndexOutOfBoundsException: length=10000; regionStart=0; regionLength=-1
at java.lang.StringFactory.newStringFromChars(StringFactory.java:218)
at **.***********.SocketHandler.listenForMessages(SocketHandler.java:48)
其中(从第45行开始)SocketHandler.listenForMessages()读取
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
char[] buffer = new char[READ_BUFFER];
int messageLength = reader.read(buffer, 0, READ_BUFFER);
String message = new String(buffer, 0, messageLength);
我还没有接触过代码的那部分-几周前没有问题-当我突然收到此异常时,即使将READ_BUFFER增大到比接收到的消息大的地方(此处为10k)。>
指标
length=10000; regionStart=0; regionLength=-1
让我假设问题源于阅读一条空消息,但我无法弄清楚为什么问题没有那么早就出现。有帮助吗?
答案 0 :(得分:0)
尝试替换此:
int messageLength = reader.read(buffer, 0, READ_BUFFER);
与此:
int messageLength = reader.read(buffer, 0, buffer.Length);
答案 1 :(得分:0)