Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与epp服务器的ssl套接字通信_Java_Xml_Sockets_Ssl_Epp - Fatal编程技术网

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

Java 与epp服务器的ssl套接字通信,java,xml,sockets,ssl,epp,Java,Xml,Sockets,Ssl,Epp,我正在用java实现一个客户端,它通过TCP和SSL与EPP服务器通信 我需要通过SSL向服务器发送一些xml-s,并读取一些xml响应。我没有客户证书,也不需要。我只是想能够向那个服务器发送请求并读取响应。我对这个话题很陌生 我的代码是: SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket sslsocket = (SSLSocket) sslsocket

我正在用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也没问题。如何检查连接是否成功建立以及接收器是否准备好接收数据。所以我排除了连接问题本身

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

java-Djavax.net.debug=all

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

***已完成
验证\u数据:。。。
****


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

标准EPP定义为总是在连接时将问候语发送到服务器,因此在上面的代码中,您正在向服务器写入命令,但输入缓冲区已经打开了问候语,因此这是您在读取响应时得到的结果

正确的流程如下所示

  • 通过SSLSocket连接到EPP服务器
  • 从输入流中读取问候语
  • 发送登录命令
  • 阅读登录响应
  • 发送您的EPP命令
  • 阅读对命令的响应
  • 重复步骤5和6,直到完成所有必要的操作
  • 发送注销命令
  • 读取注销响应
  • 合上插座
  • 并确保在每一步都测试错误。我见过太多的客户机实现只是按顺序发送内容,而不注意读取服务器回复,特别是返回代码。