Index: trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 13273)
+++ trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 13274)
@@ -4,4 +4,5 @@
 import java.awt.HeadlessException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.StringReader;
 import java.io.StringWriter;
@@ -235,5 +236,4 @@
 
         final Response response = HttpClient.create(getCapabilitiesUrl).connect();
-        String incomingData = null;
 
         if (response.getResponseCode() >= 400) {
@@ -241,4 +241,9 @@
         }
 
+        parseCapabilities(serviceUrlStr, response.getContent());
+    }
+
+    void parseCapabilities(String serviceUrlStr, InputStream contentStream) throws IOException, WMSGetCapabilitiesException {
+        String incomingData = null;
         try {
             DocumentBuilder builder = Utils.newSafeDOMBuilder();
@@ -247,5 +252,5 @@
                 return new InputSource(new StringReader(""));
             });
-            Document document = builder.parse(response.getContent());
+            Document document = builder.parse(contentStream);
             Element root = document.getDocumentElement();
 
@@ -369,5 +374,5 @@
         getChildrenStream(element)
             .filter(child -> "CRS".equals(child.getNodeName()) || "SRS".equals(child.getNodeName()))
-            .map(child -> (String) getContent(child))
+            .map(child -> getContent(child))
             .filter(crs -> !crs.isEmpty())
             .map(crs -> crs.trim().toUpperCase(Locale.ENGLISH))
@@ -421,10 +426,10 @@
             return missing;
         else {
-            String content = (String) getContent(child);
+            String content = getContent(child);
             return (!content.isEmpty()) ? content : empty;
         }
     }
 
-    private static Object getContent(Element element) {
+    private static String getContent(Element element) {
         NodeList nl = element.getChildNodes();
         StringBuilder content = new StringBuilder();
@@ -433,5 +438,6 @@
             switch (node.getNodeType()) {
                 case Node.ELEMENT_NODE:
-                    return node;
+                    content.append(getContent((Element) node));
+                    break;
                 case Node.CDATA_SECTION_NODE:
                 case Node.TEXT_NODE:
