我正在尝试从我的Java代码访问谷歌地图,如下所示:
GeoApiContext context = new GeoApiContext.Builder().apiKey("API_KEY_HERE").build();
//Setting variables...
DistanceMatrix matrix = DistanceMatrixApi.newRequest(context).origins(origins).destinations(destinations).await();
调用 await(( 会抛出异常:
java.net.UnknownServiceException: Unable to find acceptable protocols. isFallback=false, modes=[ConnectionSpec(cipherSuites=[TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA], tlsVersions=[TLS_1_3, TLS_1_2], supportsTlsExtensions=true), ConnectionSpec()], supported protocols=[TLSv1]
我收集这是来自谷歌地图使用的OkHttp库,它与TLS版本有关,但我不知道该怎么做才能解决这个问题。源代码中的所有测试用例都使用模拟Web服务器,并且没有指定真实服务器的示例,这使我相信它是在后台完成的。
有没有人有将Google Maps Java API与真实Web服务器一起使用的示例代码?
您的 JVM 未配置为使用足够新的 TLS 版本。
supported protocols=[TLSv1]
确保您的 JVM 是 8 或更高版本且是最新的。还要确保任何自定义安全提供程序(充气城堡(都是最新的。
此错误可能是因为 okhttp3 库的版本尝试使用不同版本的 okhttp3。