Revision: 6218
          http://sourceforge.net/p/jump-pilot/code/6218
Author:   edso
Date:     2020-01-13 15:38:53 +0000 (Mon, 13 Jan 2020)
Log Message:
-----------
move WMS auth to the utility class
should fix connecting WMS using authentification after adding http redirect 
support
"
java.lang.IllegalStateException: Already connected
        at 
sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(Unknown Source)
        at 
sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestProperty(Unknown 
Source)
        at 
com.vividsolutions.wms.AbstractWMSRequest.prepareConnection(AbstractWMSRequest.java:80)
        at 
com.vividsolutions.wms.AbstractWMSRequest.getConnection(AbstractWMSRequest.java:98)
        at 
com.vividsolutions.wms.AbstractWMSRequest.getInputStream(AbstractWMSRequest.java:145)
        at com.vividsolutions.wms.WMService.initialize(WMService.java:141
        ...
        "

Modified Paths:
--------------
    core/trunk/src/com/vividsolutions/wms/AbstractWMSRequest.java
    core/trunk/src/org/openjump/util/URLConnectionProvider.java

Modified: core/trunk/src/com/vividsolutions/wms/AbstractWMSRequest.java
===================================================================
--- core/trunk/src/com/vividsolutions/wms/AbstractWMSRequest.java       
2020-01-08 22:21:51 UTC (rev 6217)
+++ core/trunk/src/com/vividsolutions/wms/AbstractWMSRequest.java       
2020-01-13 15:38:53 UTC (rev 6218)
@@ -6,21 +6,16 @@
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.nio.charset.Charset;
 import java.util.List;
 import java.util.Map.Entry;
 
 import javax.imageio.ImageIO;
 
-import net.iharder.Base64;
-
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.input.BoundedInputStream;
 import org.openjump.util.URLConnectionProvider;
-import org.openjump.util.UriUtil;
 
 import com.vividsolutions.jump.util.FileUtil;
-import com.vividsolutions.jump.workbench.Logger;
 
 abstract public class AbstractWMSRequest implements WMSRequest {
 
@@ -72,18 +67,6 @@
     // by default we follow redirections
     con = (HttpURLConnection) 
URLConnectionProvider.getJUMP_URLConnectionProvider().getHttpConnection(requestUrl,
 true);
 
-    // add this service's auth info
-    String userInfo = requestUrl.getUserInfo();
-    if (userInfo != null) {
-      Logger.trace(Base64.encodeBytes(UriUtil.urlDecode(userInfo)
-              .getBytes(Charset.forName("UTF-8"))));
-      con.setRequestProperty(
-          "Authorization",
-          "Basic "
-              + Base64.encodeBytes(UriUtil.urlDecode(userInfo).getBytes(
-                  Charset.forName("UTF-8"))));
-    }
-
     return con;
   }
 
@@ -96,7 +79,7 @@
   public HttpURLConnection getConnection() throws IOException {
     if (con == null)
       con = prepareConnection();
-    
+
     return con;
   }
 

Modified: core/trunk/src/org/openjump/util/URLConnectionProvider.java
===================================================================
--- core/trunk/src/org/openjump/util/URLConnectionProvider.java 2020-01-08 
22:21:51 UTC (rev 6217)
+++ core/trunk/src/org/openjump/util/URLConnectionProvider.java 2020-01-13 
15:38:53 UTC (rev 6218)
@@ -9,6 +9,8 @@
 import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn;
 import com.vividsolutions.wms.WMSException;
 
+import net.iharder.Base64;
+
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
@@ -19,6 +21,7 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.net.URLDecoder;
+import java.nio.charset.Charset;
 import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.X509Certificate;
@@ -109,6 +112,14 @@
 
     HttpURLConnection connection = (HttpURLConnection)url.openConnection();
 
+    // add auth info if any
+    String userInfo = url.getUserInfo();
+    if (userInfo != null) {
+      String auth = 
Base64.encodeBytes(UriUtil.urlDecode(userInfo).getBytes(Charset.forName("UTF-8")));
+      connection.setRequestProperty("Authorization", "Basic " + auth);
+      Logger.trace("Added auth header 'Authorization: Basic "+auth+"'");
+    }
+
     // apply timeouts from settings
     connection.setConnectTimeout(Integer.parseInt(
         
ProxySettingsOptionsPanel.getInstance().getSetting(ProxySettingsOptionsPanel.OPEN_TIMEOUT_KEY).toString()));



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to