gpt4 book ai didi

java - 我在来自 Java 客户端的 Http Post 请求中收到无效参数错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:29 25 4
gpt4 key购买 nike

我正在从 IBM I 系列服务器上的 pojo java 应用程序发出 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

我已经确定我们使用的是 TLS 1.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 Runtime Environment (build pap3280sr4fp10-20170727_01(SR4 FP10))
IBM J9 VM(构建 2.8,JRE 1.8.0 OS/400 ppc-32 jvmap3280sr4fp10-20170727_01(启用 JIT,启用 AOT)J9VM - R28_20170722_0201_B357405
即时编译 - tr.r14.java_20170722_357405
气相色谱 - R28_20170722_0201_B357405
J9CL - 20170722_357405)
JCL-20170726_01 基于Oracle jdk8u144-b01

最佳答案

IBM Websphere 服务器使用 IBM JRE 而不是 Oracle JRE。这是引述。

The IBM implementation of SSLContext.getInstance("TLS") is different from the Oracle implementation.

在下面找到这个链接。

https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/sslcontext.html .

另请查看以下引用

If you set the system property com.ibm.jsse2.overrideDefaultTLS=true and you enable either SP800-131a strict compliance (com.ibm.jsse2.sp800-131) or Suite B (com.ibm.jsse2.suiteB) system properties, only the TLS V1.2 protocol is enabled.

来自以下链接。 https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html

引用链接 https://www.ibm.com/support/knowledgecenter/en/SSYKE2_7.1.0/com.ibm.java.security.component.71.doc/security-component/jsse2Docs/protocols.html

关于java - 我在来自 Java 客户端的 Http Post 请求中收到无效参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57379479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com