繁体   English   中英

如何使用xAgent读取RSS feed?

[英]How to read RSS feed using an xAgent?

我正在尝试使用xAgent读取外部rss提要,我似乎是gettig xml错误,如下面的一次,我怀疑是因为我使用bufferedReader逐行读取了xml

我收到这样的错误

  • “第32栏第1行出现错误:文档末尾的额外内容”
  • “第1行第6561列的错误:开始和结束标记不匹配:项目第0行和渠道”

这是我尝试过的

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">
<xp:this.afterRenderResponse>
<![CDATA[#{javascript:

var u:java.net.URL  = new java.net.URL("http://www.xpages.info/XPagesHome.nsf/NewsFeed.xsp?format=rss");
var br:BufferedReader= new java.io.BufferedReader(new java.io.InputStreamReader(u.openStream()));
var tmp="";
while(br.readLine() != null){
    tmp+= br.readLine();
}

var externalContext = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var response = externalContext.getResponse();
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
writer.write(tmp);
writer.endDocument();
}]]>

</xp:this.afterRenderResponse>
</xp:view>

您正在使用XAgent作为代理。 如果您想实际做更多,我建议使用更好的类。 最小的将是HTTP客户端(处理所有连接问题),或者如果您的源是ATOM,则是Apache Abdera类(在后台使用HTTP客户端)。

您遇到的问题:流还包含标头信息,因此您的XML不能以<开头。 使用HTTP客户端可以避免这种情况。

有点像这样:

public String getURL(String url) {

    System.out.println("Fetching " + url);

    if (this.httpClient == null) {
        this.initializeHTTPSession();
    }

    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    HttpGet get = new HttpGet(url);

    String result = null;

    try {
        result = this.httpClient.execute(get, responseHandler);
    } catch (HttpResponseException e) {
        System.out.println(e.getMessage());
        return null;
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (UnknownHostException e) {
        result = "The host is invalid: " + url;
    } catch (IOException e) {
        e.printStackTrace();
    }

    return result;
}

完整的源代码在这里: http : //www.wissel.net/blog/downloads/SHWL-8BQPJD/ $ File / HTTPReader.java

您可能想要使用String以外的其他东西作为响应处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM