RSS Parser返回403

时间:2014-06-27 13:10:26

标签: java parsing rss

我是Java的新手,我们获得了有关XML Parsing的任务。我们已经完成了DOM,现在我们在SAX上了。这就是我使用SAX Parser解析rss feed的原因。它已经在处理文件但是当我尝试解析在线rss feed时,它返回一个错误403.我没有尝试在DOM上解析同一个站点,因为我的笔记本电脑太慢了,我只需要5分钟打开一个文件。

感谢您的帮助。

public class NewsHandler extends DefaultHandler {
    private String url = "http://tomasinoweb.org/feed/rss";
    private boolean inDescription = false;

    private String[] descs = new String[11];

    int i = 0;

        public void processFeed() {
             try {
             SAXParserFactory factory = 
             SAXParserFactory.newInstance();
             SAXParser parser = factory.newSAXParser();
             XMLReader reader = parser.getXMLReader();
             reader.setContentHandler(this);
             InputStream inputStream = new URL(url).openStream(); 
             reader.parse(new InputSource(inputStream));

             } catch (Exception e) { e.printStackTrace(); }
        }
        public void startElement(String uri, String localName, String qName,
             Attributes attributes) throws SAXException {
            if(qName.equals("description")) inDescription = true;

        }

        public void characters(char ch[], int start, int length) {
             String chars = new String(ch).substring(start, start + length);
             if(inDescription) descs[i] = chars;

        }

        public void endElement(String uri, String localName, String qName) throws SAXException {
            if(qName.equals("description")) { 
                          inDescription = false;
                          i++; 
                    }
        }

        public String getDesc(int index) { return descs[index]; }

        public static void main(String[] args) {
            NewsHandler nh = new NewsHandler();
            nh.processFeed();

            for(int i=0; i<10; i++) {
                System.out.println(nh.getDesc(i));
            }

        }
}

1 个答案:

答案 0 :(得分:0)

解决方案:

我使用String url = "url"URL url = new URL("url"),然后使用URLConnection con = url.openConnection(),而不是con.addRequestProperty("user-agent", user-agent string);

相关问题