Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Okhttp3与consrypt在jdk8中支持http2_Java_Okhttp3_Http2_Okhttp - Fatal编程技术网

Java Okhttp3与consrypt在jdk8中支持http2

Java Okhttp3与consrypt在jdk8中支持http2,java,okhttp3,http2,okhttp,Java,Okhttp3,Http2,Okhttp,我一直在围绕okhttp3进行测试,以发出http2请求,我的标准是使用jdk8本身实现http2连接。我知道这可以通过升级到jdk 9或使用conscrypt作为默认提供程序轻松实现 Security.insertProviderAt(Conscrypt.newProvider(), 1); 但是像这样插入提供程序将影响应用程序级别,我只想将其限制为使用http2连接的sslSocket,所有其他套接字都应使用默认提供程序,我知道apache-httpclient-5 beta提供了一个名为

我一直在围绕okhttp3进行测试,以发出http2请求,我的标准是使用jdk8本身实现http2连接。我知道这可以通过升级到jdk 9或使用conscrypt作为默认提供程序轻松实现

Security.insertProviderAt(Conscrypt.newProvider(), 1);
但是像这样插入提供程序将影响应用程序级别,我只想将其限制为使用http2连接的sslSocket,所有其他套接字都应使用默认提供程序,我知道apache-httpclient-5 beta提供了一个名为custom的选项,该选项有助于将conscrypt指定为特定SSLSocketFactory的默认提供程序

好心帮忙


TIA

它并不是专门为这种情况设计的,而是假设如果您有可用的Conscrypt并注册了它,那么您会很高兴并愿意使用它

OkHttp平台是自动选择的,是一个JVM单例,因此您不能覆盖每个客户端或每个连接


您可能会覆盖客户端的SSLSocketFactory。但是,OkHttp还要求HTTP/1.1是可接受的协议之一,并且在客户机和服务器协商HTTP/1.1或H2之前将选择TLS提供程序。因此,这可能对您有用,也可能不适用。

它并不是专门为这种情况设计的,而是假设如果您有Conscrypt可用并已注册,那么您很乐意使用它

OkHttp平台是自动选择的,是一个JVM单例,因此您不能覆盖每个客户端或每个连接


您可能会覆盖客户端的SSLSocketFactory。但是,OkHttp还要求HTTP/1.1是可接受的协议之一,并且在客户机和服务器协商HTTP/1.1或H2之前将选择TLS提供程序。因此,这可能对您有效,也可能对您无效。

我正在使用Apache httpclient-4(用于http1.1请求)和okhttpclient(用于h2请求),因此我需要覆盖为okhttpclient创建的SSLSocketFactorys,以使用conscrypt作为默认提供程序,而Apache使用的其他SSLSocketFactorys应该使用Java的默认安全提供程序。目前,我在创建和使用Security.removeProvider(“Conscrypt”)之前使用Security.insertProviderAt(Conscrypt.newProvider(),1),在创建socketFactory之后使用它,目前正在运行,但我认为必须有一种正确的方法来实现。我使用Apache httpclient-4(用于http1.1请求)和okhttpclient(用于h2请求)因此,我需要重写为okhttpclient创建的SslSocketFactories,以使用conscrypt作为默认提供程序,而Apache使用的其他SslSocketFactories应该使用Java的默认安全提供程序。目前,我在创建和使用Security.removeProvider(“Conscrypt”)之前使用Security.insertProviderAt(Conscrypt.newProvider(),1)。在创建socketFactory之后使用Security.removeProvider(“Conscrypt”),该工厂目前正在运行,但我认为必须有一种正确的方法。