2016-05-17 57 views
0

我正在使用Java构建一系列Web服务,其中包括依靠Google的Geocoding Maps API将物理地址转换为经度和纬度点。使用HttpsUrlConnection访问Google地理编码服务

根据documentation,地理编码服务可以通过简单的GET来访问,例如,以下网址:

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,但我不知道它们在这里是否有可能。

回答

1

取决于。

由已知证书颁发机构(CA)签署的Google SSL证书是否?

如果是这样,那么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(); 
    } 
} 

上面的代码的灵感来自于,ER(主要)由How to send HTTP request in java?被盗,如何使用HttpURLConnection POST data to web server?

+0

FWIW, https://maps.google.api/的Google SSL证书由“GeoTrust Global CA”链接的“Google Internet Authority G2”签署。快速浏览最近下载的Java版本附带的信任库(cacerts),“GeoTrust Global CA”位于该信任库中,您应该乐于助人。 – hooknc

+0

我会测试你的答案并回复你,谢谢。 –

+1

添加了一些您应该可以运行的示例代码。顺便说一句,我强烈建议你看看使用HttpClient,使用HttpURLConnection是可怕的。 – hooknc

相关问题