【问题标题】:Java get webpage source or timeoutJava获取网页源或超时
【发布时间】:2013-05-02 08:52:41
【问题描述】:

我正在尝试从网页中获取数据,但如果该网页不可用,则程序会运行很长时间,直到超时。我需要它来尝试获取网页 10 秒,如果在那段时间内没有得到响应,它会返回 null。请问我怎样才能让它工作呢?

这是我获取数据的方式:

public int getThreadData( String address ) throws IOException{
    String valueString = null;
    URL url = new URL( "http://" + address + ":8080/web-console/ServerInfo.jsp" );
    URLConnection urlConnection = url.openConnection();
    urlConnection.setRequestProperty( "User-Agent",
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) 
         Gecko/20100401" );
    BufferedReader br = new BufferedReader( new InputStreamReader
        ( urlConnection.getInputStream(), "UTF-8" ) );

    String inputLine;

    while ( ( inputLine = br.readLine() ) != null )
    {
        if ( inputLine.contains( "#Threads" ) )
        {
            valueString = inputLine.substring( inputLine.indexOf( "/b>" ) + 3 );
            valueString = valueString.substring( 0, valueString.indexOf( "<" ) );
        }
    }
    br.close();

    return Integer.parseInt( valueString );

}

【问题讨论】:

    标签: java web web-scraping


    【解决方案1】:

    您是否尝试过如下设置连接超时:

    urlConnection.setConnectTimeout(10000); // 10000 milliseconds
    

    【讨论】:

    • 不,我没有 :D 谢谢,这就是我要找的。​​span>
    【解决方案2】:

    您可能应该使用可以大大简化这些事情的 HTTP 库(如 Apache's HTTPClient)。如果您使用的是 HTTPClient,您将执行以下操作:

                // Set the timeout to 20-seconds.
                final HttpParams httpParams = new BasicHttpParams();
                HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);
                HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);
    
                DefaultHttpClient httpClient = new DefaultHttpClient(cm, httpParams);
                HttpPost postRequest = new HttpPost(URL);
                HttpResponse response;
                response = httpClient.execute(postRequest);
    

    【讨论】:

    • HttpConnectionParams.setConnectionTimeoutUrlConnection.setConnectTimeout 简单得多?
    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2011-08-15
    • 2019-04-20
    • 2015-08-27
    • 1970-01-01
    相关资源
    最近更新 更多