HttpClient响应只有一行XML

时间:2011-02-09 06:50:56

标签: java android apache httpclient

我正在使用HttpClient来获取XML文件,并且我在返回整个文档时遇到问题(它只返回XML文件的一行)。所以:

DefaultHttpClient c = new DefaultHttpClient();
BasicResponseHandler r = new BasicResponseHandler();

String s = null;
try
{
    s = c.execute(new HttpGet("http://localhost/activity.xml"), r);
}
catch (Exception e)
{
    e.printStackTrace();
}

Log.i(TAG, s);

结果字符串始终只是<?xml version="1.0" encoding="UTF-8"?>

我是否需要做些什么来告诉HttpClient加载整个文件或处理换行符? XML非常简单:

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <group-id type="integer">2187</group-id>
    <icon type="integer">2</icon>
    <name>Android</name>
    <overview>android app</overview>
    <permalink>codebase</permalink>
    <start-page>tickets</start-page>
    <status>active</status>
</project>

2 个答案:

答案 0 :(得分:1)

试试这个。

HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while((line = in.readLine()) != null){
                sb.append(line + NL);
            }
            in.close();

            String page = sb.toString();
            Log.d("Join", page);

如果你想获得xml数据,你最好扩展DefaultHandler。并使用像SAXParser,XMLReader这样的解析器。

答案 1 :(得分:1)

如果您传递BasicResponseHandler作为响应处理程序,execute的结果应该是整个响应正文。

如果你只得到一行,我的理论就是这就是服务器发送的全部内容。

查看服务器日志以查看在生成响应正文时是否抛出异常。 (例如,如果您使用JSP进行渲染,则无法通过HTTP状态代码将抛出的异常报告回客户端。相反,客户端将看到带有截断主体的200响应。)