问题描述
我正在使用以下设置InteliiJ + Java 8 + Web服务+ OkHTTP(3.12.12)+ Glassfish(4.1.1)来调用REST Api,但在连接到REST Api时会遇到一些问题
java.net.UnkNownServiceException:无法找到可接受的协议。 isFallback = false, 模式= [ConnectionSpec(cipherSuites = [TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384,TLS_CHACHA20_poly1305_SHA256, TLS_AES_128_CCM_SHA256,TLS_AES_256_CCM_8_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,TLS_1_1,TLS_1_0], supportTlsExtensions = true),ConnectionSpec()],受支持 协议= [TLSv1.2,TLSv1.1,TLSv1]
我对此的怀疑可能是TLS版本问题,即我通过具有较低TLS的OkHTTP进行调用,但JDK 8默认使用TLS 1.2。我也将TLS设置为TLS 1.2,但代码仍然没有结果。现在我想知道还有什么其他设置会导致此问题。对不起,这是我第一次使用Java构建Web服务。我需要做的设置请告诉我。
我的下面的代码
ConnectionSpec requireTLS12 = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.tlsversions(Tlsversion.TLS_1_2)
.build();
OkHttpClient client = new OkHttpClient.Builder()
.connectionSpecs(Arrays.asList(requireTLS12))
.build();
Request request = new Request.Builder()
.url("https://restcountries-v1.p.rapidapi.com/all")
.get()
.addHeader("x-rapidapi-host","restcountries-v1.p.rapidapi.com")
.addHeader("x-rapidapi-key","key_key_key")
.build();
try (Response response = client.newCall(request).execute()) {
ResponseLah = response.body().string();
// ... do something with response
return ResponseLah;
} catch (IOException e) {
e.printstacktrace();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)