ssl与epp服务器的套接字通信

时间:2014-02-25 11:47:12

标签: 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中放入的字符串,我总是得到同样的greating xml响应。

现在我想知道即使是SSL hanshake也没问题。如何检查连接是否已成功建立以及接收器是否已准备好接收数据。所以我自己排除了连接问题。

2 个答案:

答案 0 :(得分:1)

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

正确的流程如下

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

答案 1 :(得分:0)

使用

运行项目时,可以调试通信

java -Djavax.net.debug=all

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

结束

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

然后是一些简单和加密的数据。