2014-02-25 53 views
0

tI'm用Java实现的一个客户端,通过TCP和SSL comunicates到EPP服务器。SSL套接字communicatoin到EPP服务器

我NEAD一些XML-S通过SSL向服务器发送一个读取一些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就OK。如何检查连接是否成功建立以及接收者是否准备好接收数据。这样我就排除了连接问题本身。

回答

0

java -Djavax.net.debug=all运行项目时,您可以调试通信。

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

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

,然后一些平原和加密数据结束。

1

标准EPP被定义为总是发送关于连接到服务器的问候,所以在你的代码上面你写你的命令到服务器,但输入缓冲区将已有的问候语,所以这是你会得到什么阅读回复时回来。

正确的流程如下

  1. 连接到EPP服务器经由SSLSocket的
  2. 阅读来自输入流
  3. 问候发送登录命令
  4. 阅读登录响应
  5. 发送您的EPP命令
  6. 读取响应你的命令
  7. 重复步骤5 & 6,直到你做了一切必要的
  8. 发送注销命令
  9. 阅读注销响应
  10. 关闭插座
+0

**和**确保测试每个错误步。我看到过多的客户端实现只是顺序地发送东西,而没有考虑读取服务器回复,特别是返回码。 –