run-main:
java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:652)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1064)
        at com.sun.syndication.io.XmlReader.<init>(XmlReader.java:237)
        at com.rss.parseRss(rss.java:29)
        at com.rss.main(rss.java:75)
有说是阻塞引起的可是,怎么解决呢?  求高手解答!!!!

解决方案 »

  1.   

    源代码:
    这个是解析rss 源!!!!import com.sun.syndication.feed.synd.SyndCategory;
    import com.sun.syndication.feed.synd.SyndContent;
    import com.sun.syndication.feed.synd.SyndEnclosure;
    import com.sun.syndication.feed.synd.SyndEntry;
    import com.sun.syndication.feed.synd.SyndFeed;
    import com.sun.syndication.io.SyndFeedInput;
    import com.sun.syndication.io.XmlReader;
    import java.net.Socket;public class rss {    public void parseRss() {        try {
                String url = "http://www.natesc.com.cn/data/rss/29.xml";
                // 读取Rss源
                java.net.URLConnection feedUrl = new java.net.URL(url).openConnection();
                XmlReader reader = new XmlReader(feedUrl);            // System.out.println("Rss源的编码格式为:" + reader.getEncoding());
                SyndFeedInput input = new SyndFeedInput();
                // 得到SyndFeed对象,即得到Rss源里的所有信息
                SyndFeed feed = input.build(reader);
                // 得到Rss新闻中子项列表
                List entries = feed.getEntries();
                // 循环得到每个子项信息
                for (int i = 0; i < entries.size(); i++) {
                    SyndEntry entry = (SyndEntry) entries.get(i);
                    // 标题、连接地址、标题简介、时间是一个Rss源项最基本的组成部分
                    System.out.println("标题:" + entry.getTitle());
                    System.out.println("连接地址:" + entry.getLink());
                    SyndContent description = entry.getDescription();
                    System.out.println("标题简介:" + description.getValue());
                    System.out.println("发布时间:" + entry.getPublishedDate());
                    // 以下是Rss源可先的几个部分
                    System.out.println("标题的作者:" + entry.getAuthor());
                    // 此标题所属的范畴
                    List categoryList = entry.getCategories();
                    if (categoryList != null) {
                        for (int m = 0; m < categoryList.size(); m++) {
                            SyndCategory category = (SyndCategory) categoryList.get(m);
                            System.out.println("此标题所属的范畴:" + category.getName());
                        }
                    }            }        } catch (Exception e) {
                e.printStackTrace();
            }    }    public static void main(String arg[]) {
            rss Rss = new rss();
            Rss.parseRss();    }
    }
      

  2.   

    今天下午有试了N次,也换了好几个rss源, 突然发现时好时坏。时不时的能正常显示,很不稳定!!!!!!急切的想知道原因。
      

  3.   

    现在 问题是,每次运行这个的时候,时好时坏,有时候能正常输出,但有时候却又抛出异常!!!真的很奇怪的现象!我在try里加了一句 reader.close();貌似没什么效果。真的很想知道原因啊。等待高手!!!
      

  4.   

    我最近在做一个网络爬虫的功能, 用的httpclient , 也会报链接重置的异常,网上查了N久 ,没有解决问题,有的说是恢复策略设置一下,但没有效果求解啊!
      

  5.   

    网上的是这样说的:
    java异常:
    java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    at weblogic.servlet.internal.PostInputStream.read(PostInputStream.java:170)
    at weblogic.servlet.internal.ServletInputStreamImpl$1.read(ServletInputStreamImpl.java:115)
    at weblogic.servlet.internal.ServletInputStreamImpl.read(ServletInputStreamImpl.java:180)
    at weblogic.servlet.internal.ServletRequestImpl.mergePostParams(ServletRequestImpl.java:1257)
    at weblogic.servlet.internal.ServletRequestImpl.parseQueryParams(ServletRequestImpl.java:1124)
    at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java:1335)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:383)
    .........在网上找了些说法:a。maybe:
    1,网络编程时未正确捕获java.net.SocketException,客户端先关闭就会报这个异常;
    2,数据库和应用服务器的网段不同.b。好像说防火墙的比较多。
    大部分是网络的原因。提交post的东西多,然后服务器接收就超时了c。如果weblogic server和数据库服务器不在同一台主机,会经常有这种情况,我也遇到过,不过好像的确不怎么影响使用
    d。从根本上说是weblogic sp2的buge。一般是有些客户端已关闭,一些线程因为延迟等原因觉察不到此连接已结束,继续等到到出错或是 客户端那里不停刷或一个访问/刷新没完成前再刷,要让这个无用的线程死掉和这个错误如果不影响应用运行的话大可不必理会。有一种抛出这个异常的情况是:
    浏览器请求了一个服务器端资源,在响应回来之前转而请求其他的资源。这个时候最初的浏览器跟服务器的连接中断,服务器的peer程序就会reset那个connection。