Hello Dirk, You have added following lines to the method "HttpClient.SendRequestHeader". This code does not work with mod_dav, and I believe it violates the http standard: RFC2616, page 128, chapter 14.23 Host. Do you mind, if we remove those lines:
// if (this.https) // hostName = "https://" + hostName; // else // hostName = "http://" + hostName; Best regards juergen -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Sunday, November 18, 2001 19.29 PM To: [EMAIL PROTECTED] Subject: cvs commit: jakarta-slide/src/webdav/client/src/org/apache/commons/httpclient HttpClient.java dirkv 01/11/18 10:28:33 Modified: src/webdav/client/src/org/apache/commons/httpclient HttpClient.java Log: https support using SSL sockets Revision Changes Path 1.6 +43 -30 jakarta-slide/src/webdav/client/src/org/apache/commons/httpclient/HttpClient .java Index: HttpClient.java =================================================================== RCS file: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/commons/httpclient/ HttpClient.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- HttpClient.java 2001/09/14 17:48:24 1.5 +++ HttpClient.java 2001/11/18 18:28:33 1.6 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/commons/httpclient/ HttpClient.java,v 1.5 2001/09/14 17:48:24 juergen Exp $ - * $Revision: 1.5 $ - * $Date: 2001/09/14 17:48:24 $ + * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/commons/httpclient/ HttpClient.java,v 1.6 2001/11/18 18:28:33 dirkv Exp $ + * $Revision: 1.6 $ + * $Date: 2001/11/18 18:28:33 $ * * ==================================================================== * @@ -423,8 +423,7 @@ try { openConnection(); methodProcessed = true; - - } + } catch (java.net.ConnectException e) { // System.out.println("##################11111 =" + retries); // e.printStackTrace(); @@ -684,13 +683,7 @@ * to make usage more clear. */ public void startSession() { - - if (state == null) - state = new State(); - this.sessionHost = "localhost"; - this.sessionPort = 80; - this.https = false; - + startSession("localhost",80,null,false); } @@ -698,7 +691,7 @@ * Start a session. */ public void startSession(String host, int port) { - startSession(host,port,false); + startSession(host,port,null,false); } @@ -706,17 +699,7 @@ * Start a session. */ public void startSession(String host, int port, boolean https) { - if (debug > 0) - System.out.println("Start session : Host:" + host - + " Port:" + port - + " HTTPS:" + https); - - if (state == null) - state = new State(); - this.sessionHost = host; - this.sessionPort = port; - this.https = https; - + startSession(host,port,null,https); } @@ -744,7 +727,6 @@ this.sessionHost = host; this.sessionPort = port; this.https = https; - } @@ -780,7 +762,7 @@ */ public void startSession(URL url, Credentials creds) { setCredentials(creds); - startSession(url.getHost(), url.getPort() == -1 ? 80 : url.getPort()); + startSession(url); } @@ -827,10 +809,21 @@ ("Reopen connection : Host:" + sessionHost + " Port:" + sessionPort); if(https) { - socket = new Socket - (this.sessionHost, this.sessionPort); - //socket = SSLSocketFactory.getDefault().createSocket - //(this.sessionHost, this.sessionPort); + // Use reflection to do: + // socket = SSLSocketFactory.getDefault().createSocket + // (this.sessionHost, this.sessionPort); + Class sslFactoryClass = Class.forName("javax.net.ssl.SSLSocketFactory"); + Method getDefaultMethod = sslFactoryClass.getMethod("getDefault", new Class[0]) ; + Object sslSocketFactory = getDefaultMethod.invoke(null,null); + Class[] paramClass = new Class[2]; + paramClass[0] = String.class; + paramClass[1] = int.class; + Method createSocketMethod = sslSocketFactory.getClass().getMethod("createSocket",paramClass); + Object[] param = new Object[2]; + param[0] = this.sessionHost; + param[1] = new Integer(this.sessionPort); + Socket socket = (Socket) createSocketMethod.invoke(sslSocketFactory,param); + } else { socket = new Socket (this.sessionHost, this.sessionPort); @@ -857,6 +850,21 @@ } throw e; + } catch (Exception e) { + // no special handling for + // NoSuchAlgorithmException + // KeyManagementException + if (connectionInterceptor != null) { + connectionInterceptor.error(-1, e); + } + + // Connection is probably half closed + // Closing the connection and trying again + if (socket != null) { + socket.close(); + socket = null; + } + throw new IOException(e.getMessage()); } if (connectionInterceptor != null) { @@ -923,6 +931,11 @@ String hostName = sessionHost; if (sessionPort != 80) hostName = hostName + ":" + sessionPort; + + if (this.https) + hostName = "https://" + hostName; + else + hostName = "http://" + hostName; method.generateHeaders(hostName, state); -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
