After giving all the timeout code, I am still not getting the timeout as
needed!! Why is that?
bensonthomas wrote:
>
> 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: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>
> 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--tp12163727p21261101.html
Sent from the HttpClient-User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]