EPP всегда возвращает приветствие

Эй, ребята, я запускаю клиент 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, он все равно возвращает приветствие.

если бы вы, ребята, могли бы указать мне правильное направление, это было бы очень признательно.

2 ответа

Решение

Каждый раз, когда вы отправляете какую-либо команду или открываете соединение, вы должны прочитать и сбросить ответ. Я попал в эту ловушку при разработке своего клиента EPP.

Подключение. Прочитать ответ (вы получите приветствие) Отправить команду Войти. Прочитать ответ (вы получите ответ при входе) Отправить команду. Прочитайте ответ. Отправить Отключить. Прочитайте ответ.

Я предполагаю, что вы подключаетесь, затем отправляете команду входа в систему и задаетесь вопросом, почему ответ, который вы только что получили, был приветствием. Вы пропустили шаг.:)

После подключения сервер обычно отвечает приветствием.

Прочитайте ответ приветствия при подключении. Затем вы можете отправлять команды и получать ответы в обычном режиме.

Другие вопросы по тегам