hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bensonthomas <bensontho...@sbcglobal.net>
Subject Re: Why connection timeouts doesn't works?
Date Sat, 03 Jan 2009 01:32:38 GMT

Timeout is not working for me as well. Code below

***************************************************************
package com.test.hc;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpVersion;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;

public class HttpGetter { 

	private static final int DEFAULT_SOCKET_TIMEOUT = 100; 
	private HttpClient httpClient; 
	private GetMethod method; 

	public HttpGetter() { 
		super();

		int timeout = DEFAULT_SOCKET_TIMEOUT;
		HttpConnectionManager cm = new SimpleHttpConnectionManager();		
		
		HttpConnectionManagerParams connManagerParams = new
HttpConnectionManagerParams();
		
	  connManagerParams.setConnectionTimeout(timeout); //D in
HttpConnectionManagerParams	
	  cm.setParams(connManagerParams);
	  HttpClientParams cliParams = new HttpClientParams(); //D
	    cliParams.setConnectionManagerTimeout(timeout); //D
	    
	    cliParams.setParameter("http.protocol.version", HttpVersion.HTTP_1_1);
//SAMEAS 1
	    cliParams.setParameter("http.socket.timeout", new Integer(timeout));
//SAMEAS 1
	    cliParams.setParameter("http.protocol.content-charset", "UTF-8");
//SAMEAS 1
	    
	    this.httpClient = new HttpClient(cliParams, cm); //D		
		
	}

	public String getFromURLAsString(String url) throws HttpException, 
	IOException { 
	  URI uri = new URI(url, false); 
	  method = new GetMethod(uri.getEscapedURI()); 
	  method.getParams().setSoTimeout(DEFAULT_SOCKET_TIMEOUT); 
	  int result = httpClient.executeMethod(method); 
	  return method.getResponseBodyAsString();
	} 
	} 



***************************************************************

Calling code is 

        HttpGetter httpGetter = new HttpGetter(); 
System.out.println("Came here");	
       
System.out.println(httpGetter.getFromURLAsString("http://google.com")); 
System.out.println("Came out"); 


***************************************************************

OUTPUT WAS : after almost 2 minutes

Error 500--Internal Server Error 
java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
	at java.net.Socket.connect(Socket.java:452)
	at java.net.Socket.connect(Socket.java:402)
	at java.net.Socket.(Socket.java:309)
	at java.net.Socket.(Socket.java:184)
	at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)
	at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
	at
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:710)
	at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
	at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
	at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
	at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
	at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
	at com.test.hc.HttpGetter.getFromURLAsString(HttpGetter.java:31)
	at jsp_servlet.__i._jspService(__i.java:125)
	at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
	at
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
	at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
	at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:526)
	at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
	at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
	at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
	at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
	at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
 


***************************************************************



Vitaly Baranovsky 2 wrote:
> 
> Good day!
> 
> Connection timeouts of httpClient in my program doesn't works. I set
> timeout to 10 000 milliseconds, but my program waits for about 65
> seconds before answering.
> 
> Here is stacktrace of my unit test:
> java.net.SocketException: Network is unreachable: connect
>  at java.net.PlainSocketImpl.socketConnect(Native Method)
>  at java.net.PlainSocketImpl.doConnect(Unknown Source)
>  at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
>  at java.net.PlainSocketImpl.connect(Unknown Source)
>  at java.net.SocksSocketImpl.connect(Unknown Source)
>  at java.net.Socket.connect(Unknown Source)
>  at java.net.Socket.connect(Unknown Source)
>  at java.net.Socket.<init>(Unknown Source)
>  at java.net.Socket.<init>(Unknown Source)
>  at
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(Unknown
> Source)
>  at
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(Unknown
> Source)
>  at org.apache.commons.httpclient.HttpConnection.open(Unknown Source)
>  at
> org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(Unknown
> Source)
>  at
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Unknown
> Source)
>  at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(Unknown
> Source)
>  at org.apache.commons.httpclient.HttpClient.executeMethod(Unknown Source)
>  at org.apache.commons.httpclient.HttpClient.executeMethod(Unknown Source)
>  at net.liga.commons.HttpGetter.runGetCore(HttpGetter.java:58)
>  at net.liga.commons.HttpGetter.getFromURLAsString(HttpGetter.java:88)
>  at
> net.liga.commons.test.HttpGetterTest.testGetFromUrlAsString(HttpGetterTest.java:38)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>  at java.lang.reflect.Method.invoke(Unknown Source)
>  at junit.framework.TestCase.runTest(TestCase.java:164)
>  at junit.framework.TestCase.runBare(TestCase.java:130)
>  at junit.framework.TestResult$1.protect(TestResult.java:106)
>  at junit.framework.TestResult.runProtected(TestResult.java:124)
>  at junit.framework.TestResult.run(TestResult.java:109)
>  at junit.framework.TestCase.run(TestCase.java:120)
>  at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
>  at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> 
> 
> 
> Here is the code of my class:
> 
> public class HttpGetter {
> 
> private static final int DEFAULT_SOCKET_TIMEOUT = 10000;
> private HttpClient httpClient;
> private GetMethod method;
> 
> public HttpGetter() {
> super();
> MultiThreadedHttpConnectionManager cm = new
> MultiThreadedHttpConnectionManager();
> cm.getParams().setSoTimeout(DEFAULT_SOCKET_TIMEOUT);
> 
> httpClient = new HttpClient(cm);
> }
> 
> private String getFromURLAsString(String url) throws HttpException,
> IOException {
>   URI uri = new URI(url, false);
>   method = new GetMethod(uri.getEscapedURI());
>   method.getParams().setSoTimeout(DEFAULT_SOCKET_TIMEOUT);
>   int result = httpClient.executeMethod(method);
>   return method.getResponseBodyAsString();;
> }
> }
> 
> 
> 
> Here is the code of my TestCase:
> 
> public class HttpGetterTest extends TestCase {
> 	public void testGetFromUrlAsString() throws HttpException, IOException{
> 		HttpGetter httpGetter = new HttpGetter();
> 		System.out.println(httpGetter.getFromURLAsString("http://google.com"));
> 	}
> }
> 
> 
> Why timeouts doesn't works?
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: httpclient-user-help@jakarta.apache.org
> 
> 
> 
Timeout is not working for me as well. Code belowTimeout is not working for
me as well. Code below
-- 
View this message in context: http://www.nabble.com/Why-connection-timeouts-doesn%27t-works--tp12163727p21261092.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Mime
View raw message