我有WebSocket客户端,该客户端正在将服务器的响应读入InputStream
。我想将其放入String
中以进行进一步处理(它是xml
文档),但我没有得到完整的答复。
方法:
public String recv() throws java.io.IOException {
DataInputStream dis = new DataInputStream(mInput);
StringBuffer inputLine = new StringBuffer();
String tmp;
while ((tmp = dis.readLine()) != null) {
inputLine.append(tmp);
System.out.println(tmp);
}
dis.close();
return inputLine.toString();
}
我明白了
[org.xml.sax.SAXParseException; lineNumber:1; columnNumber:48733; 元素类型“ original_severity”必须以 匹配的结束标签“ ”。]
因为响应不完整,并且我的XML解析器无法解析响应
答案 0 :(得分:-1)
服务器发送的网络套接字消息可能会分成几帧。
请参见https://tools.ietf.org/html/rfc6455#section-5
您必须确保客户端在尝试解析消息之前重新组合整个消息。
使用第三方websocket客户端会容易得多,因为这些库通常会隐藏协议的这一部分。