Exemplo n.º 1
0
    @Override
    protected void realRun() throws SAXException, IOException, OsmTransferException {
      String urlString = useserver.url + java.net.URLEncoder.encode(searchExpression, "UTF-8");

      try {
        getProgressMonitor().indeterminateSubTask(tr("Querying name server ..."));
        URL url = new URL(urlString);
        synchronized (this) {
          connection = Utils.openHttpConnection(url);
        }
        connection.setConnectTimeout(Main.pref.getInteger("socket.timeout.connect", 15) * 1000);
        InputStream inputStream = connection.getInputStream();
        InputSource inputSource = new InputSource(new InputStreamReader(inputStream, "UTF-8"));
        NameFinderResultParser parser = new NameFinderResultParser();
        SAXParserFactory.newInstance().newSAXParser().parse(inputSource, parser);
        this.data = parser.getResult();
      } catch (Exception e) {
        if (canceled)
          // ignore exception
          return;
        OsmTransferException ex = new OsmTransferException(e);
        ex.setUrl(urlString);
        lastException = ex;
      }
    }
Exemplo n.º 2
0
    @Override
    protected void realRun() throws SAXException, IOException, OsmTransferException {
      String urlString = useserver.url + Utils.encodeUrl(searchExpression);

      try {
        getProgressMonitor().indeterminateSubTask(tr("Querying name server ..."));
        URL url = new URL(urlString);
        synchronized (this) {
          connection = HttpClient.create(url);
          connection.connect();
        }
        try (Reader reader = connection.getResponse().getContentReader()) {
          InputSource inputSource = new InputSource(reader);
          NameFinderResultParser parser = new NameFinderResultParser();
          Utils.parseSafeSAX(inputSource, parser);
          this.data = parser.getResult();
        }
      } catch (SAXParseException e) {
        if (!canceled) {
          // Nominatim sometimes returns garbage, see #5934, #10643
          Main.warn(tr("Error occured with query ''{0}'': ''{1}''", urlString, e.getMessage()));
          GuiHelper.runInEDTAndWait(
              new Runnable() {
                @Override
                public void run() {
                  HelpAwareOptionPane.showOptionDialog(
                      Main.parent,
                      tr("Name server returned invalid data. Please try again."),
                      tr("Bad response"),
                      JOptionPane.WARNING_MESSAGE,
                      null);
                }
              });
        }
      } catch (Exception e) {
        if (!canceled) {
          OsmTransferException ex = new OsmTransferException(e);
          ex.setUrl(urlString);
          lastException = ex;
        }
      }
    }