1

当我尝试使用 sax 解析器解析提要时,我无法弄清楚为什么会出现此错误。代码很简单,它一直是许多其他 url 的工作代码。

    try{
         String myurl="http://news.google.com/news?ned=us&topic=n&output=rss"

        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setValidating(false);
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();
        xr.setContentHandler(this);

        URL com = new URL(urls);
        URLConnection con = com.openConnection();
        con.setConnectTimeout(20000);
        is = new InputSource(new InputStreamReader(con.getInputStream()));
        xr.parse(is);
    } catch (Exception e) {... }

我得到的错误是

  07-30 18:15:28.713: WARN/System.err(596): java.io.FileNotFoundException: http://news.google.com/news?ned=us&topic=n&output=rss
  07-30 18:15:28.763: WARN/System.err(596): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1064)
  07-30 18:15:28.763: WARN/System.err(596): at com.mycityway.commonparsers.CommonParser.createFeed(CommonParser.java:311)    
  ...

请建议我这样做的正确方法

4

1 回答 1

3

他们通过User-Agent标头进行简单的浏览器检查。如果他们不喜欢它,他们会发送 403(禁止)。只需添加一个通用的,它就可以工作。每当遇到此问题时,我首先尝试以下行,并且它几乎总是可以工作:

URLConnection urlc = url.openConnection();
urlc.addRequestProperty("User-Agent", "firefox");
于 2010-07-30T14:08:52.643 回答