1

我正在使用HttpClient向应该返回 xml 数据的服务器发送请求。此数据作为分块数据返回。然后我试图将接收到的 xml 数据写入文件。我使用的代码如下所示:

    HttpEntity entity = response.getEntity();
    InputStream instream = entity.getContent();

        try {
            // do something useful
            InputStreamReader isr = new InputStreamReader(instream);
            FileWriter pw;

            pw = new FileWriter(filename, append);

            OutputStreamWriter outWriter = new OutputStreamWriter(new FileOutputStream(filename, append), "UTF-8");
            BufferedReader rd = new BufferedReader(isr);

            String line = "";
            while ((line = rd.readLine()) != null) {
                // pw.write(line);
                outWriter.write(line);
            }
            isr.close();
            pw.close();
        } finally {
            instream.close();
        }

这会导致将如下所示的数据打印到文件中: 结果文件

此代码适用于非分块数据。如何使用 HttpClient 正确处理分块数据响应。任何帮助是极大的赞赏。

4

1 回答 1

4

我不认为你的问题是数据分块。

XML 数据是纯文本数据 - 分块意味着它被分成几个部分,然后依次传输。因此,每个块都应该包含可见的纯文本 xml 数据,这显然不是数据图片中显示的情况。

可能是内容是通过 gzip 编码压缩的,或者不是纯文本 XML,而是二进制编码的 XML(例如 WBXML)。

您可以从发送的服务器响应标头中看到您拥有的具体类型,尤其是它包含的使用的 mime 类型。

于 2012-08-21T15:19:13.317 回答