【问题标题】:EPP always returns greetingEPP 总是返回问候语
【发布时间】:2015-05-06 14:09:50
【问题描述】:

大家好,我正在启动一个 EPP 客户端,它只返回来自服务器的问候语,即使我尝试发送我的登录命令。

这是我的代码,有什么问题?

     using (var _tcpClient = new TcpClient(_endpoint.Host, _endpoint.Port))
     {

            using (var sslStream = new SslStream(_tcpClient.GetStream(), false, ValidateServerCertificate))
            {
                sslStream.AuthenticateAsClient(_endpoint.Host);

                XmlDocument xdoc = new XmlDocument();
                xdoc.LoadXml(requestData);
                xdoc.Save("C:/request.xml");
                string data = xdoc.InnerXml;
                byte[] bytedata = Encoding.UTF8.GetBytes(data);
                //Get the request stream.
                sslStream.Write(bytedata, 0, bytedata.Length);
                // Write the data to the request stream.


                sslStream.Flush();

                var response = ReadMessage(sslStream);
                XResponse = XDocument.Parse(response);

                XResponse.Save("C:/response.xml");
            }

        }
        return XResponse;
    }

    private string ReadMessage(SslStream sslStream)
    {
        // The first four bytes will be the the content length as a network order (big-endian) 32-bit number.  
        var lengthBytes = new byte[4];
        sslStream.Read(lengthBytes, 0, 4);
        Array.Reverse(lengthBytes);

        var length = BitConverter.ToInt32(lengthBytes, 0) - 4;

        // Create a byte array of the correct size for the response.  
        var messageBytes = new byte[length];

        var returned = 0;

        while (returned != length)
        {
            returned += sslStream.Read(messageBytes, 0, length);
        }

        return Encoding.UTF8.GetString(messageBytes);
    }  

即使我没有用 ssl 流写任何东西,它仍然会返回问候语。

如果你们能指出我正确的方向,将不胜感激。

【问题讨论】:

    标签: c# xml epp


    【解决方案1】:

    每次发送任何命令或打开连接时,都必须读取并刷新响应。我在开发 EPP 客户端时陷入了这个陷阱。

    连接。阅读回复(你收到问候) 发送登录命令。读取响应(您会收到登录响应) 发送命令。阅读响应。 发送断开连接。阅读回复。

    我想您正在连接,然后发送登录命令并想知道为什么您刚刚收到的响应是问候语。你错过了一步。 :)

    【讨论】:

    • 这个!!!我最终确实让它工作了,但忘了更新问题所以谢谢你:)
    • 我现在也有同样的问题,你说的“阅读回复”是什么意思?我使用套接字返回服务器的响应,甚至更进一步,在每个命令之后发送一个 hello 请求,但无论我做什么,domain:check 和 domain:info 总是返回空字符串。
    【解决方案2】:

    连接后,服务器通常会回复问候。

    在连接时读取问候响应。然后您就可以正常发送命令和接收响应了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2015-08-11
      • 2019-05-11
      • 2020-08-09
      • 2015-12-16
      • 2016-05-10
      • 1970-01-01
      相关资源
      最近更新 更多