getResponseBodyAsStream返回“1字节UTF-8序列的无效字节1”

时间:2011-03-21 09:13:55

标签: java xml-parsing

我的代码是

PostMethod method = new PostMethod(TRANSLATION_SERVICE);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(method.getResponseBodyAsStream());

它产生

  

1字节UTF-8序列的字节1无效

当我使用method.getResponseBodyAsString()时,我得到了所需的回复,但the API明确指出

  

注意:这将导致整个响应正文缓冲在内存中。恶意服务器可能很容易耗尽所有VM内存。强烈建议,如果响应的内容长度未知或合理地大,请使用getResponseAsStream。

是否有上述方法的替代方案?

1 个答案:

答案 0 :(得分:0)

您正在阅读的内容声称使用UTF-8编码,但没有(可能使用LATIN-1或Windows默认编码):也就是说,XML文档是问题被破坏;或您调用的服务返回不正确的编码定义。无论哪种方式,服务都会向您返回无效信息。