【问题标题】:HttpClient response only one line of XMLHttpClient 只响应一行 XML
【发布时间】:2011-02-09 06:50:55
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: java android apache httpclient


    【解决方案1】:

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

    如果你只收到一条线,我的理论是服务器发送的就是这条线。

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

    【讨论】:

    • 日志中没有任何内容。目前它只是一个静态 XML 文件。我可以指向浏览器中的 URL,它显示得很好。很困惑,因为它几天前还在工作。
    • 我刚刚重新启动了 IntelliJ 和模拟器,现在它正在加载整个主体。我想我的 AVD 有问题。还是谢谢。
    【解决方案2】:

    试试这个。

    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 之类的解析器。

    【讨论】:

    • 感谢您的建议。我正在使用 DefaultHandler 和 SAX 我只是写这个来弄清楚为什么我的 XML 没有完全加载。
    • 那么你应该使用这种格式作为 看到这个google.co.kr/ig/api?weather=NY
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多