EPP 总是 returns 问候语
EPP always returns greeting
嘿,伙计们,我正在启动一个 EPP 客户端,它只有 returns 来自服务器的问候语,即使我尝试发送我的登录命令也是如此。
这是我的代码,有什么问题吗?
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 流写任何东西,它仍然是 returns 问候语。
如果你们能指出我正确的方向,将不胜感激。
连接后,服务器通常会回复问候语。
连接后阅读问候回复。然后就可以正常发送命令和接收响应了。
每次发送任何命令或打开连接时,都必须读取并刷新响应。我在开发EPP客户端的时候掉进了这个陷阱。
连接。阅读回复(您收到问候语)
发送登录命令。读取响应(您获得登录响应)
发送命令。阅读回应。
发送断开连接。阅读回复。
我想您正在连接,然后发送登录命令并想知道为什么您刚刚收到的响应是问候语。你错过了一步。 :)
嘿,伙计们,我正在启动一个 EPP 客户端,它只有 returns 来自服务器的问候语,即使我尝试发送我的登录命令也是如此。
这是我的代码,有什么问题吗?
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 流写任何东西,它仍然是 returns 问候语。
如果你们能指出我正确的方向,将不胜感激。
连接后,服务器通常会回复问候语。
连接后阅读问候回复。然后就可以正常发送命令和接收响应了。
每次发送任何命令或打开连接时,都必须读取并刷新响应。我在开发EPP客户端的时候掉进了这个陷阱。
连接。阅读回复(您收到问候语) 发送登录命令。读取响应(您获得登录响应) 发送命令。阅读回应。 发送断开连接。阅读回复。
我想您正在连接,然后发送登录命令并想知道为什么您刚刚收到的响应是问候语。你错过了一步。 :)