0

我正在用 java 实现一个客户端,它通过 TCP 和 SSL 与 EPP 服务器通信。

我需要通过 SSL 向服务器发送一些 xml-s 并读取一些 xml 响应。我没有客户证书,也没有客户证书。我只是需要能够向该服务器发送请求并读取响应。我对这个话题很陌生。

我的代码是这样的:

SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("server.epp.si", 65000);              

DataOutputStream outToServerSSL = new DataOutputStream(sslsocket.getOutputStream());
BufferedReader inFromServerSSL = new BufferedReader(new InputStreamReader(sslsocket.getInputStream()));

outToServerSSL.write(somXML.getBytes());

inFromServerSSL.readLine();

它不依赖于我在 xml 中放入的字符串,我总是得到相同的 xml 响应。

现在我想知道 SSL hanshake 是否正常。如何检查连接是否已成功建立以及接收方是否已准备好接收数据。这样我就排除了连接问题本身。

4

2 回答 2

1

标准 EPP 被定义为始终在连接到服务器时发送问候语,因此在上面的代码中,您正在将命令写入服务器,但输入缓冲区已经打开了问候语,因此这是您在阅读回复。

正确的流程如下

  1. 通过 SSLSocket 连接 EPP 服务器
  2. 从输入流中读取问候语
  3. 发送登录命令
  4. 阅读登录响应
  5. 发送您的 EPP 命令
  6. 阅读对命令的响应
  7. 重复步骤 5 和 6,直到您完成所有必要的操作
  8. 发送注销命令
  9. 阅读注销响应
  10. 关闭插座
于 2014-06-23T14:31:34.177 回答
0

您可以在运行项目时调试通信

java -Djavax.net.debug=all.

你可以看到整个握手,它应该以

*** Finished verify_data:... ****

然后是一些普通和加密的数据。

于 2014-05-27T09:29:18.140 回答