无法读取来自WebSocket的响应(仅是部分响应)

时间:2020-07-03 13:05:35

标签: java websocket

我有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解析器无法解析响应

1 个答案:

答案 0 :(得分:-1)

服务器发送的网络套接字消息可能会分成几帧。

请参见https://tools.ietf.org/html/rfc6455#section-5

您必须确保客户端在尝试解析消息之前重新组合整个消息。

使用第三方websocket客户端会容易得多,因为这些库通常会隐藏协议的这一部分。