使用 HttpsUrlConnection 访问 Google 地理编码服务
Using HttpsUrlConnection to access Google Geocoding service
我正在 Java 构建一系列 Web 服务,除其他外,我将依赖 Google 的地理编码地图 API 来转换物理地址转换为经纬度点。
根据 documentation,可以通过简单的 GET 访问地理编码服务,例如以下 URL:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
此处YOUR_API_KEY
将替换为与您的应用对应的实际密钥。
谈到实际问题,我打算在 Java 中使用 HttpsUrlConnection
进行 GET 调用。但是,我对应该信任哪个证书感到困惑。简单地信任所有证书是否安全,或者我应该将 Google SSL 证书安装到我的信任库中,并且只信任它?我在 Stack Overflow 上读到过关于中间人攻击的内容,但我不知道它们是否存在于此。
视情况而定。
Google 由遗嘱签署的 SSL 证书是否已知 Certificate Authority (CA)?
如果是这样,该 SSL 证书应该在 Java 附带的默认信任库中,您无需执行任何操作即可信任该证书。
如果不是,那么您需要特别信任 Google SSL 证书。
我个人使用 InstallCert 程序下载证书并将其安装到默认的 Java Truststore。
编辑
这里有一些示例代码供您参考:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class GoogleMapsTest {
public static void main(String[] args) throws Exception {
URL url = new URL("https://maps.google.com/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
while((line = rd.readLine()) != null) {
System.out.println(line);
}
rd.close();
}
}
以上代码的灵感来自,呃(大部分)是从 and How to use HttpURLConnection POST data to web server?
偷来的
我正在 Java 构建一系列 Web 服务,除其他外,我将依赖 Google 的地理编码地图 API 来转换物理地址转换为经纬度点。
根据 documentation,可以通过简单的 GET 访问地理编码服务,例如以下 URL:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
此处YOUR_API_KEY
将替换为与您的应用对应的实际密钥。
谈到实际问题,我打算在 Java 中使用 HttpsUrlConnection
进行 GET 调用。但是,我对应该信任哪个证书感到困惑。简单地信任所有证书是否安全,或者我应该将 Google SSL 证书安装到我的信任库中,并且只信任它?我在 Stack Overflow 上读到过关于中间人攻击的内容,但我不知道它们是否存在于此。
视情况而定。
Google 由遗嘱签署的 SSL 证书是否已知 Certificate Authority (CA)?
如果是这样,该 SSL 证书应该在 Java 附带的默认信任库中,您无需执行任何操作即可信任该证书。
如果不是,那么您需要特别信任 Google SSL 证书。
我个人使用 InstallCert 程序下载证书并将其安装到默认的 Java Truststore。
编辑
这里有一些示例代码供您参考:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class GoogleMapsTest {
public static void main(String[] args) throws Exception {
URL url = new URL("https://maps.google.com/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
while((line = rd.readLine()) != null) {
System.out.println(line);
}
rd.close();
}
}
以上代码的灵感来自,呃(大部分)是从 and How to use HttpURLConnection POST data to web server?
偷来的