I am new to HttpCore and using 4.0 Alpha 2 version. I am trying to connect a server and request more than one pages from that server using the same connection. My goal is to reuse socket so that no new socket is opened on the Http client for the subsequent requests to the same server and port.
I get error on the second request. The output / exception stack is as follows: << Request: GET / HTTP/1.1 << Send at: Wed Nov 08 11:57:47 PST 2006 >> Response: HTTP/1.1 200 OK << Received: Wed Nov 08 11:57:47 PST 2006 >> Headers Name: Date Value: Wed, 08 Nov 2006 19:57:47 GMT >> Headers Name: Server Value: Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7g >> Headers Name: Last-Modified Value: Wed, 01 Nov 2006 10:45:24 GMT >> Headers Name: ETag Value: "d4813c-45be-4212d33413900" >> Headers Name: Accept-Ranges Value: bytes >> Headers Name: Content-Length Value: 17854 >> Headers Name: Keep-Alive Value: timeout=5, max=100 >> Headers Name: Connection Value: Keep-Alive >> Headers Name: Content-Type Value: text/html ============== Connection kept alive... << Request: GET /httpcomponents/index.html HTTP/1.1 << Send at: Wed Nov 08 11:57:48 PST 2006 org.apache.http.ProtocolException: The server jakarta.apache.org failed to respond with a valid HTTP response at org.apache.http.impl.DefaultHttpClientConnection.readResponseStatusLine(DefaultHttpClientConnection.java:278) at org.apache.http.impl.DefaultHttpClientConnection.receiveResponseHeader(DefaultHttpClientConnection.java:222) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:421) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:204) at org.apache.http.examples.ElementalHttpGet.main(ElementalHttpGet.java:118) If anyone knows the links where I can get more information, that will help. I have modelled my code on the lines of ElementalHttpGet example. The code is as follows: package org.apache.http.examples; import org.apache.http.ConnectionReuseStrategy; import org.apache.http.Header; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; import org.apache.http.Scheme; import org.apache.http.impl.DefaultConnectionReuseStrategy; import org.apache.http.impl.DefaultHttpClientConnection; import org.apache.http.impl.DefaultHttpParams; import org.apache.http.impl.io.PlainSocketFactory; import org.apache.http.io.SocketFactory; import org.apache.http.message.HttpGet; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpExecutionContext; import org.apache.http.protocol.HttpRequestExecutor; import org.apache.http.protocol.RequestConnControl; import org.apache.http.protocol.RequestContent; import org.apache.http.protocol.RequestExpectContinue; import org.apache.http.protocol.RequestTargetHost; import org.apache.http.protocol.RequestUserAgent; /** * <p> * </p> * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a> * * @version $Revision: 376458 $ */ public class ElementalHttpGet { public static void main(String[] args) throws Exception { SocketFactory socketfactory = PlainSocketFactory.getSocketFactory(); Scheme.registerScheme("http", new Scheme("http", socketfactory, 80)); HttpParams params = new DefaultHttpParams(null); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, "UTF-8"); HttpProtocolParams.setUserAgent(params, "Jakarta-HttpComponents/1.1"); HttpProtocolParams.setUseExpectContinue(params, true); HttpHost host = new HttpHost("jakarta.apache.org", 80); HttpContext context = new HttpExecutionContext(null); context.setAttribute(HttpExecutionContext.HTTP_TARGET_HOST, host); HttpRequestExecutor httpexecutor = new HttpRequestExecutor(context); httpexecutor.setParams(params); // Required protocol interceptors httpexecutor.addInterceptor(new RequestContent()); httpexecutor.addInterceptor(new RequestTargetHost()); // Recommended protocol interceptors httpexecutor.addInterceptor(new RequestConnControl()); httpexecutor.addInterceptor(new RequestUserAgent()); httpexecutor.addInterceptor(new RequestExpectContinue()); DefaultHttpClientConnection conn = new DefaultHttpClientConnection(host); ConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy(); try { String[] targets = { "/", "/httpcomponents/index.html", "/httpcomponents/download.html" }; for (int i = 0; i < targets.length; i++) { HttpGet request = new HttpGet(targets[i]); System.out.println("<< Request: " + request.getRequestLine()); HttpResponse response = httpexecutor.execute(request, conn); System.out.println(">> Response: " + response.getStatusLine()); Header[] hds = response.getAllHeaders(); for (Header h: hds){ System.out.println(">> Headers Name: " + h.getName() + " Value: " + h.getValue() ); } System.out.println("=============="); if (!connStrategy.keepAlive(response)) { System.out.println("Connection closed."); conn.close(); } else { conn.flush(); System.out.println("Connection kept alive..."); } } } catch(Exception exp){ exp.printStackTrace(); } finally { conn.close(); } } } Any help is appreciated. Thanks. -- This message was sent on behalf of [EMAIL PROTECTED] at openSubscriber.com http://www.opensubscriber.com/messages/httpclient-dev@jakarta.apache.org/topic.html --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]