gpt4 book ai didi

java - 无法调用网络服务

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:03 24 4
gpt4 key购买 nike

我正在尝试调用一个 Web 服务,我通过 POST 为其发送 xml 数据并收到响应。

生产 Web 服务需要我获得的证书。我已将此证书导入我的 keystore 并在我的客户端代码中使用它,但我一直收到超时错误。

您知道导致此问题的原因吗?

17:30:15,214 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) java.net.ConnectException: Operation timed out
17:30:15,214 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at java.net.PlainSocketImpl.socketConnect(Native Method)
17:30:15,215 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
17:30:15,215 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
17:30:15,215 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
17:30:15,216 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
17:30:15,216 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at java.net.Socket.connect(Socket.java:579)
17:30:15,216 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618)
17:30:15,216 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:407)
17:30:15,217 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88)
17:30:15,217 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at hot.com.mhd.erp.action.client.PushStatusClient.pushXML(PushStatusClient.java:478)
17:30:15,217 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at main.com.mhd.erp.sched.StatusPushJob.execute(StatusPushJob.java:73)
17:30:15,218 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
17:30:15,218 ERROR [stderr] (DefaultQuartzScheduler_Worker-6) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)

公司已将 ip 地址列入白名单且未在防火墙后运行,此连接问题是否与未正确使用证书有关?我已将它们导入我的 keystore ,但我是否需要在我的代码中或使用 JBoss(托管应用程序)执行其他操作

我也这样做来设置 keystore 、密码、类型等。

System.setProperty("https.protocols", "SSLv3");
System.setProperty("javax.net.ssl.trustStore", ERPGetProperty.erpGetProperty("pathToKeyStore"));
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.keyStore", ERPGetProperty.erpGetProperty("pathToKeyStore"));
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");

URL url = new URL(address);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();

con.setConnectTimeout(10000);
SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();


con.setSSLSocketFactory(sslSocketFactory);

con.setRequestMethod("POST");
con.setUseCaches(true);
con.setRequestProperty("Content-type", "text/xml");
con.setRequestProperty("Host", "pwspg.newcorp.com");
con.setRequestProperty("Content-Length", Integer.toString(xml.length()));
con.setRequestProperty("SOAPAction", address);
con.setDoOutput(true);
con.setDoInput(true);

userPass = username + ":" + password;
byte[] encodeBytes = Base64.encodeBase64(userPass.getBytes());
String encode = new String(encodeBytes);
con.setRequestProperty("Authorization", "Basic " + encode);

out = con.getOutputStream();

out.write(b);

更新:网络服务所有者再次确认我的 IP 地址已列入白名单。我用telnet测试主机,连接超时。如果我 ping 它,我确实会收到数据包。还有什么可能导致无法连接到网络服务的问题?

有人告诉我这与证书无关,但我似乎找不到问题所在。这是我这边的问题吗?

最佳答案

我认为这与证书无关。

您是否尝试使用 telnet 从您的主机连接到服务的主机?

$ telnet google.com 443
Trying 173.194.44.133...
Connected to google.com.
Escape character is '^]'.

立即连接。

$ telnet pwspg.newcorp.com 443
Trying 38.176.90.103...

永远等待。会不会白名单没有成功?

地址来自

URL url = new URL(address);

明确包含“httpS”和端口号?

关于java - 无法调用网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641848/

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