java - ssl 套接字与 epp 服务器通信

标签 java xml sockets ssl epp

我正在用 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 被定义为始终在连接到服务器时发送问候语,因此在上面的代码中,您正在将命令写入服务器,但输入缓冲区已经打开了问候语,所以这就是您将得到的结果阅读回复时。

正确的流程如下

  1. 通过 SSLSocket 连接到 EPP 服务器
  2. 从输入流中读取问候语
  3. 发送登录命令
  4. 阅读登录响应
  5. 发送您的 EPP 命令
  6. 阅读对您命令的响应
  7. 重复第 5 步和第 6 步,直到完成所有必要的操作
  8. 发送注销命令
  9. 阅读注销响应
  10. 关闭套接字

关于java - ssl 套接字与 epp 服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22013287/

相关文章:

java - 如何使用多个日期选择器更新 TextView

java - 谷歌云信使中的参数不能为空异常

c++ - Xerces/Xalan : UNC path as argument for document function?

xml - 分析大量 XML 的程序

java - 如何改用 ArrayList

java - 为什么我只能显示 NFC 标签 (nDEF) 的前 4 页

javascript - Ajax 解析本地 XML

c - 在套接字编程中消息未从服务器发送到客户端

c - 为什么动态分配的数组不会随着新数据的到来而更新?

Java的InputStream会破坏信息,为什么?