Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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客户端的Http Post请求上收到一个无效的参数错误_Java_Ssl_Http Post - Fatal编程技术网

我在来自java客户端的Http Post请求上收到一个无效的参数错误

我在来自java客户端的Http Post请求上收到一个无效的参数错误,java,ssl,http-post,Java,Ssl,Http Post,我正在从IBMi-series服务器上的POJOJava应用程序发出HTTP Post请求 HttpResponse response = httpclient.execute(httppost); 大约3秒钟后,我将返回此错误 java.net.SocketException: A system call received a parameter that is not valid. (Read failed) at java.net.SocketInputStream.socke

我正在从IBMi-series服务器上的POJOJava应用程序发出HTTP Post请求

    HttpResponse response = httpclient.execute(httppost);
大约3秒钟后,我将返回此错误

java.net.SocketException: A system call received a parameter that is not 
valid. (Read failed)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:127)
at java.net.SocketInputStream.read(SocketInputStream.java:182)      
at java.net.SocketInputStream.read(SocketInputStream.java:152)      
at com.ibm.jsse2.b.a(b.java:192)                                    
     at com.ibm.jsse2.b.a(b.java:168)                                     
     at com.ibm.jsse2.at.a(at.java:358)                                   
     at com.ibm.jsse2.at.i(at.java:785)                                   
     at com.ibm.jsse2.at.a(at.java:68)                                    
     at com.ibm.jsse2.at.startHandshake(at.java:520)                      
     at 
org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredS
ocket(SSLConnectionSocketFactory.java:394)                                   
     at 
org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(
SSLConnectionSocketFactory.java:353)                                         
     at 
org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.conn
ect(DefaultHttpClientConnectionOperator.java:134)                            
     at 
org.apache.http.impl.conn.PoolingHttpClientConnectionManager.conne
ct(PoolingHttpClientConnectionManager.java:353)                              
     at 
org.apache.http.impl.execchain.MainClientExec.establishRoute(MainC
lientExec.java:380)                                                          
     at 
org.apache.http.impl.execchain.MainClientExec.execute(MainClientEx
ec.java:236)                                                                 
     at 
org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.j
我已经确定我们使用的是TLS1.2,java版本是1.8

客户端-代码段-

CloseableHttpClient httpclient = 

HttpClientBuilder.create().setDefaultRequestConfig(config).build();
HttpPost httppost = new HttpPost("https://lb1.cardknox.com/gateway");

SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);
SSLContext.setDefault(sslContext);

HttpResponse response = httpclient.execute(httppost); 
注: 当我在eclipse工作台上使用它时,它工作得很好——我只有在IBM服务器上运行它时才会出现问题

IBM服务器上的Java运行时详细信息 java版本“1.8.0”
Java(TM)SE运行时环境(构建pap3280sr4fp10-20170727_01(SR4 FP10))
IBM J9虚拟机(构建2.8,JRE 1.8.0 OS/400 ppc-32 jvmap3280sr4fp10-20170727_01(启用JIT,启用AOT) J9VM-R28_20170722_0201_B357405
JIT-tr.r14.java_20170722_357405
GC-R28_20170722_0201_B357405
J9CL-20170722_357405)

JCL-20170726_01基于Oracle jdk8u144-b01

IBM Websphere server使用IBM JRE而不是Oracle JRE。这是报价单

SSLContext.getInstance(“TLS”)的IBM实现是不同的 来自Oracle实现

请在下面找到此链接

还可以查看以下引用

如果设置系统属性com.ibm.jsse2.overrideDefaultTLS=true 并且您可以使SP800-131a严格合规 (com.ibm.jsse2.sp800-131)或套件B(com.ibm.jsse2.suiteB)系统 属性,则仅启用TLS V1.2协议

从下面的链接。

参考链接

IBM Websphere server使用IBM JRE而不是Oracle JRE。这是报价单

SSLContext.getInstance(“TLS”)的IBM实现是不同的 来自Oracle实现

请在下面找到此链接

还可以查看以下引用

如果设置系统属性com.ibm.jsse2.overrideDefaultTLS=true 并且您可以使SP800-131a严格合规 (com.ibm.jsse2.sp800-131)或套件B(com.ibm.jsse2.suiteB)系统 属性,则仅启用TLS V1.2协议

从下面的链接。

参考链接

我们不是在使用IBM Websphere,而是在IBM I-server上安装本机java SE 8。我不确定这是否有帮助,但我们已经在这样做了。。。SSLContext SSLContext=SSLContext.getInstance(“TLSv1.2”);你能检查一下IBM Server中的java版本并告诉我们吗?我刚刚将它添加到了顶部线程,因为它比允许的注释大-你能参考上面的主要帖子吗?是的,可以看到它是IBM JRE 1.8版,您可以尝试使用此链接。您是否尝试按照上面链接中给出的设置系统属性?我们使用的不是IBM Websphere,而是IBM I-server上的本机java SE 8安装。我不确定这是否有帮助,但我们已经在这样做了。。。SSLContext SSLContext=SSLContext.getInstance(“TLSv1.2”);您可以检查IBM Server中的java版本并告诉我们。我刚刚将其添加到顶部线程,因为它比允许的注释大-您可以参考上面的主要帖子吗?是的,可以看到它是IBM JRE 1.8版,您可以尝试使用此链接。您是否尝试按照上面链接中给出的设置系统属性?