Hi, Am trying to connect to the secure URL say for instance " https://java.sun.com/". But unable to get the respose from the server with exception as "Failed to download file. org.apache.commons.httpclient.NoHttpResponseException: " (please see full logs below)
By trying same piece of code with non-secure URL as "http://java.sun.com/", able to get the web page content as response. Is there any specifics to be considered in the below code to handle the HTTPS case for proxy server settings. Sanjeev Kumar ---------------------------------------------------------------------------------------------------- package com.test; import java.io.IOException; import org.apache.commons.httpclient.Credentials; import org.apache.commons.httpclient.DefaultMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import com.adp.ttscli.util.CLIConstants; public class MyHttpClient { private static String url = "https://java.sun.com/"; static String proxy_host = "proxy.host.comes.here"; static int proxy_port = 8080; public static void main(String[] args) { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); //setProxy(String proxyHost, int proxyPort) client.getHostConfiguration().setProxy(proxy_host, proxy_port); Credentials creds = new UsernamePasswordCredentials("test", "test"); //use a null realm client.getState().setProxyCredentials(null, proxy_host, creds); //enable preemptive authentication client.getState().setAuthenticationPreemptive(true); Logger logger = Logger.getLogger(MyHttpClient.class); BasicConfigurator.configure(); logger.info("Entering application."); DefaultMethodRetryHandler retryhandler = new DefaultMethodRetryHandler(); retryhandler.setRequestSentRetryEnabled(false); retryhandler.setRetryCount(1); method.setMethodRetryHandler(retryhandler); try { int statusCode = client.executeMethod(method); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + method.getStatusLine()); } byte[] responseBody = method.getResponseBody(); System.out.println("**********************"); //System.out.println(new String(responseBody)); } catch (IOException e) { System.err.println("Failed to download file."); e.printStackTrace(); } finally { method.releaseConnection(); } } } Below are the logs generated with http client wire .................. ---------------------------------------------------------------------- log4j:WARN No appenders could be found for logger ( org.apache.commons.httpclient.HttpClient). log4j:WARN Please initialize the log4j system properly. 594 [main] INFO com.test.MyHttpClient - Entering application. 594 [main] DEBUG org.apache.commons.httpclient.HttpClient - enter HttpClient.executeMethod(HttpMethod) 594 [main] DEBUG org.apache.commons.httpclient.HttpClient - enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState) 610 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Preemptively sending default basic credentials 625 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Authenticating with BASIC <any realm>@java.sun.com:443 625 [main] DEBUG org.apache.commons.httpclient.HttpState - enter HttpState.getCredentials(AuthScope) 625 [main] WARN org.apache.commons.httpclient.HttpMethodDirector - Required credentials not available for BASIC <any realm>@java.sun.com:443 625 [main] WARN org.apache.commons.httpclient.HttpMethodDirector - Preemptive authentication requested but no default credentials available 625 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Attempt number 1 to process request 625 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.open() 625 [main] DEBUG org.apache.commons.httpclient.HttpConnection - Open connection to proxy.host.comes.here":8080 641 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Preemptively sending default basic credentials 641 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Authenticating with BASIC <any realm>@proxy.host.comes.here":8080 641 [main] DEBUG org.apache.commons.httpclient.HttpState - enter HttpState.getProxyCredentials(AuthScope) 641 [main] DEBUG org.apache.commons.httpclient.auth.BasicScheme - enter BasicScheme.authenticate(Credentials, HttpMethod) 641 [main] DEBUG org.apache.commons.httpclient.params.HttpMethodParams - Credential charset not configured, using HTTP element charset 766 [main] DEBUG org.apache.commons.httpclient.auth.BasicScheme - enter BasicScheme.authenticate(UsernamePasswordCredentials, String) 766 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - HttpMethodBase.addRequestHeader(Header) 766 [main] DEBUG org.apache.commons.httpclient.ConnectMethod - enter ConnectMethod.execute(HttpState, HttpConnection) 766 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.execute(HttpState, HttpConnection) 766 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.writeRequest(HttpState, HttpConnection) 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.printLine(String) 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.writeLine(byte[]) 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.writeLine() 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 766 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 766 [main] DEBUG httpclient.wire.header - >> "CONNECT java.sun.com:443HTTP/1.1" 766 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.writeRequestHeaders(HttpState,HttpConnection) 766 [main] DEBUG org.apache.commons.httpclient.ConnectMethod - enter ConnectMethod.addRequestHeaders(HttpState, HttpConnection) 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.addUserAgentRequestHeaders(HttpState, HttpConnection) 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.addHostRequestHeader(HttpState, HttpConnection) 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - Adding Host request header 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.addProxyConnectionHeader(HttpState, HttpConnection) 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - HttpMethodBase.addRequestHeader(Header) 782 [main] DEBUG httpclient.wire.header - >> "Proxy-Authorization: Basic dGVzdDp0ZXN0[\r][\n]" 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 782 [main] DEBUG httpclient.wire.header - >> "User-Agent: Jakarta Commons-HttpClient/3.0[\r][\n]" 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 782 [main] DEBUG httpclient.wire.header - >> "Host: java.sun.com[\r][\n]" 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 782 [main] DEBUG httpclient.wire.header - >> "Proxy-Connection: Keep-Alive[\r][\n]" 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.writeLine() 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 782 [main] DEBUG httpclient.wire.header - >> "[\r][\n]" 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.flushRequestOutputStream() 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.readResponse(HttpState, HttpConnection) 782 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.readStatusLine(HttpState, HttpConnection) 782 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.readLine() 782 [main] DEBUG org.apache.commons.httpclient.HttpParser - enter HttpParser.readLine(InputStream, String) 782 [main] DEBUG org.apache.commons.httpclient.HttpParser - enter HttpParser.readRawLine() 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Closing the connection. 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.close() 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.closeSockedAndStreams() 23762 [main] INFO org.apache.commons.httpclient.HttpMethodDirector - I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server java.sun.com failed to respond 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - The server java.sun.com failed to respond org.apache.commons.httpclient.NoHttpResponseException: The server java.sun.com failed to respond at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(Unknown Source) at org.apache.commons.httpclient.HttpMethodBase.readResponse(Unknown Source) at org.apache.commons.httpclient.HttpMethodBase.execute(Unknown Source) at org.apache.commons.httpclient.ConnectMethod.execute(Unknown Source) at org.apache.commons.httpclient.HttpMethodDirector.executeConnect(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 com.test.MyHttpClient.main(MyHttpClient.java:56) 23762 [main] INFO org.apache.commons.httpclient.HttpMethodDirector - Retrying request 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Attempt number 2 to process request 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.open() 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - Open connection to proxy.host.comes.here":8080 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Preemptively sending default basic credentials 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Authenticating with BASIC <any realm>@proxy.host.comes.here":8080 23762 [main] DEBUG org.apache.commons.httpclient.HttpState - enter HttpState.getProxyCredentials(AuthScope) 23762 [main] DEBUG org.apache.commons.httpclient.auth.BasicScheme - enter BasicScheme.authenticate(Credentials, HttpMethod) 23762 [main] DEBUG org.apache.commons.httpclient.params.HttpMethodParams - Credential charset not configured, using HTTP element charset 23762 [main] DEBUG org.apache.commons.httpclient.auth.BasicScheme - enter BasicScheme.authenticate(UsernamePasswordCredentials, String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - HttpMethodBase.addRequestHeader(Header) 23762 [main] DEBUG org.apache.commons.httpclient.ConnectMethod - enter ConnectMethod.execute(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.execute(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.writeRequest(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.printLine(String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.writeLine(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.writeLine() 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG httpclient.wire.header - >> "CONNECT java.sun.com:443HTTP/1.1" 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.writeRequestHeaders(HttpState,HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.ConnectMethod - enter ConnectMethod.addRequestHeaders(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.addUserAgentRequestHeaders(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.addHostRequestHeader(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - Adding Host request header 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.addProxyConnectionHeader(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - HttpMethodBase.addRequestHeader(Header) 23762 [main] DEBUG httpclient.wire.header - >> "Proxy-Authorization: Basic dGVzdDp0ZXN0[\r][\n]" 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG httpclient.wire.header - >> "User-Agent: Jakarta Commons-HttpClient/3.0[\r][\n]" 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG httpclient.wire.header - >> "Host: java.sun.com[\r][\n]" 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG httpclient.wire.header - >> "Proxy-Connection: Keep-Alive[\r][\n]" 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.print(String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.writeLine() 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[]) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.write(byte[], int, int) 23762 [main] DEBUG httpclient.wire.header - >> "[\r][\n]" 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.flushRequestOutputStream() 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.readResponse(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpMethodBase - enter HttpMethodBase.readStatusLine(HttpState, HttpConnection) 23762 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.readLine() 23762 [main] DEBUG org.apache.commons.httpclient.HttpParser - enter HttpParser.readLine(InputStream, String) 23762 [main] DEBUG org.apache.commons.httpclient.HttpParser - enter HttpParser.readRawLine() 46742 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Closing the connection. 46742 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.close() 46742 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.closeSockedAndStreams() 46742 [main] DEBUG org.apache.commons.httpclient.HttpMethodDirector - Method retry handler returned false. Automatic recovery will not be attempted 46742 [main] DEBUG org.apache.commons.httpclient.HttpConnection - enter HttpConnection.releaseConnection() 46742 [main] DEBUG org.apache.commons.httpclient.HttpConnection - Releasing connection back to connection manager. Failed to download file. org.apache.commons.httpclient.NoHttpResponseException: The server java.sun.com failed to respond at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(Unknown Source) at org.apache.commons.httpclient.HttpMethodBase.readResponse(Unknown Source) at org.apache.commons.httpclient.HttpMethodBase.execute(Unknown Source) at org.apache.commons.httpclient.ConnectMethod.execute(Unknown Source) at org.apache.commons.httpclient.HttpMethodDirector.executeConnect(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 com.test.MyHttpClient.main(MyHttpClient.java:56)
