Java获取网页源或超时
我试图从网页中获取数据,但如果该网页不可用,程序将运行很长时间,直到超时。我需要它尝试获取网页10秒,如果在这段时间内没有得到响应,它将返回null。请问,我怎样才能做到那样 以下是我获取数据的方式:Java获取网页源或超时,java,web,web-scraping,Java,Web,Web Scraping,我试图从网页中获取数据,但如果该网页不可用,程序将运行很长时间,直到超时。我需要它尝试获取网页10秒,如果在这段时间内没有得到响应,它将返回null。请问,我怎样才能做到那样 以下是我获取数据的方式: public int getThreadData( String address ) throws IOException{ String valueString = null; URL url = new URL( "http://" + address + ":8080/web
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 );
}
public int getThreadData(字符串地址)引发IOException{
字符串valueString=null;
URL=newURL(“http://“+address+”:8080/web console/ServerInfo.jsp”);
URLConnection URLConnection=url.openConnection();
urlConnection.setRequestProperty(“用户代理”,
“Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.9.2.3)
Gecko/20100401”);
BufferedReader br=新的BufferedReader(新的InputStreamReader
(urlConnection.getInputStream(),“UTF-8”);
字符串输入线;
而((inputLine=br.readLine())!=null)
{
if(inputLine.contains(“#Threads”))
{
valueString=inputLine.substring(inputLine.indexOf(“/b>”)+3);
valueString=valueString.substring(0,valueString.indexOf(“您可能应该使用一个HTTP库(like),它可以大大简化这些操作。如果您使用的是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);
您可能应该使用一个HTTP库(如),它可以大大简化这些事情。如果您使用的是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);
您是否尝试过按以下方式设置连接超时:
urlConnection.setConnectTimeout(10000); // 10000 milliseconds
您是否尝试过按以下方式设置连接超时:
urlConnection.setConnectTimeout(10000); // 10000 milliseconds
HttpConnectionParams.setConnectionTimeout
比UrlConnection.setConnectTimeout
简单得多?HttpConnectionParams.setConnectionTimeout
比UrlConnection.setConnectTimeout
简单得多?不,我没有:谢谢,这是我要找的。不,我没有:谢谢,这是我要找的我在找。