我正在用 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 握手是否正常。如何检查它是否已成功建立连接以及接收方是否已准备好接收数据。这样我就排除了连接问题本身。
最佳答案
标准 EPP 被定义为始终在连接到服务器时发送问候语,因此在上面的代码中,您正在将命令写入服务器,但输入缓冲区已经打开了问候语,所以这就是您将得到的结果阅读回复时。
正确的流程如下
- 通过 SSLSocket 连接到 EPP 服务器
- 从输入流中读取问候语
- 发送登录命令
- 阅读登录响应
- 发送您的 EPP 命令
- 阅读对您命令的响应
- 重复第 5 步和第 6 步,直到完成所有必要的操作
- 发送注销命令
- 阅读注销响应
- 关闭套接字
关于java - ssl 套接字与 epp 服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22013287/