aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pom.xml5
-rw-r--r--src/org/traccar/geocode/JsonReverseGeocoder.java34
2 files changed, 27 insertions, 12 deletions
diff --git a/pom.xml b/pom.xml
index 8b8b80e79..f1a4c55d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,11 @@
<version>3.10.1.Final</version>
</dependency>
<dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.5</version>
+ </dependency>
+ <dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</version>
diff --git a/src/org/traccar/geocode/JsonReverseGeocoder.java b/src/org/traccar/geocode/JsonReverseGeocoder.java
index 684bfa0c1..3f5fe8bed 100644
--- a/src/org/traccar/geocode/JsonReverseGeocoder.java
+++ b/src/org/traccar/geocode/JsonReverseGeocoder.java
@@ -15,15 +15,17 @@
*/
package org.traccar.geocode;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
import org.traccar.helper.Log;
import javax.json.Json;
import javax.json.JsonObject;
+import javax.json.JsonReader;
import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
public abstract class JsonReverseGeocoder implements ReverseGeocoder {
@@ -37,21 +39,29 @@ public abstract class JsonReverseGeocoder implements ReverseGeocoder {
public String getAddress(AddressFormat format, double latitude, double longitude) {
try {
- HttpURLConnection conn = (HttpURLConnection) new URL(String.format(url, latitude, longitude)).openConnection();
+ CloseableHttpClient httpClient = HttpClients.createDefault();
try {
- Reader reader = new InputStreamReader(conn.getInputStream());
+ CloseableHttpResponse response = httpClient.execute(new HttpGet(String.format(url, latitude, longitude)));
try {
- Address address = parseAddress(Json.createReader(reader).readObject());
- if (address != null) {
- return format.format(address);
+ HttpEntity entity = response.getEntity();
+ if (entity != null) {
+ JsonReader reader = Json.createReader(new InputStreamReader(entity.getContent()));
+ try {
+ Address address = parseAddress(reader.readObject());
+ if (address != null) {
+ return format.format(address);
+ }
+ } finally {
+ reader.close();
+ }
}
} finally {
- reader.close();
+ response.close();
}
} finally {
- conn.disconnect();
+ httpClient.close();
}
- } catch(Exception error) {
+ } catch (Exception error) {
Log.warning(error);
}