我正在使用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>
答案 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响应。)