Index: trunk/src/org/openstreetmap/josm/io/NameFinder.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NameFinder.java	(revision 12553)
+++ trunk/src/org/openstreetmap/josm/io/NameFinder.java	(revision 12557)
@@ -18,5 +18,7 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.HttpClient.Response;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
 import org.openstreetmap.josm.tools.UncheckedParseException;
@@ -34,7 +36,13 @@
 
     /**
-     * Nominatim URL.
+     * Nominatim default URL.
      */
     public static final String NOMINATIM_URL = "https://nominatim.openstreetmap.org/search?format=xml&q=";
+
+    /**
+     * Nominatim URL property.
+     * @since xxx
+     */
+    public static final StringProperty NOMINATIM_URL_PROP = new StringProperty("nominatim-url", NOMINATIM_URL);
 
     private NameFinder() {
@@ -48,5 +56,5 @@
      */
     public static List<SearchResult> queryNominatim(final String searchExpression) throws IOException {
-        return query(new URL(NOMINATIM_URL + Utils.encodeUrl(searchExpression)));
+        return query(new URL(NOMINATIM_URL_PROP.get() + Utils.encodeUrl(searchExpression)));
     }
 
@@ -59,6 +67,9 @@
     public static List<SearchResult> query(final URL url) throws IOException {
         final HttpClient connection = HttpClient.create(url);
-        connection.connect();
-        try (Reader reader = connection.getResponse().getContentReader()) {
+        Response response = connection.connect();
+        if (response.getResponseCode() >= 400) {
+            throw new IOException(response.getResponseMessage() + ": " + response.fetchContent());
+        }
+        try (Reader reader = response.getContentReader()) {
             return parseSearchResults(reader);
         } catch (ParserConfigurationException | SAXException ex) {
Index: trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 12553)
+++ trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 12557)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.tools.HttpClient;
+import org.openstreetmap.josm.tools.HttpClient.Response;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
@@ -226,7 +227,12 @@
         }
 
-        final String incomingData = HttpClient.create(getCapabilitiesUrl).connect().fetchContent();
+        final Response response = HttpClient.create(getCapabilitiesUrl).connect();
+        final String incomingData = response.fetchContent();
         Main.debug("Server response to Capabilities request:");
         Main.debug(incomingData);
+
+        if (response.getResponseCode() >= 400) {
+            throw new WMSGetCapabilitiesException(response.getResponseMessage(), incomingData);
+        }
 
         try {
