我正在使用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正确处理分块数据响应。非常感谢任何帮助。
答案 0 :(得分:4)
我不认为你的问题是数据的分块。
XML数据是纯文本数据 - 分块意味着它被分成几个部分,这些部分被转移到另一个部分。因此,每个块应包含可见的纯文本xml数据,显然不是数据图中所示的情况。
可能是内容是通过gzip压缩编码的,或者它不是纯文本XML而是二进制编码的XML(例如像WBXML)。
您可以从发送的服务器响应标头中看到具体类型,尤其是它包含的已使用的mime类型。