我需要与 .NL 区域注册商合作 - sidn.nl。
他们有 EPP 服务器。我采用标准的 EPP HELLO 模板,通过 CURL 添加 4 个字节(大端的消息大小)——作为响应,服务器根本不给出任何响应。以下是我准备一切的方式:
var epp_hello = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'+
'<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">'+
' <hello/>'+
'</epp>'; // шаблон
var xml = bigEndian(epp_hello)+""; // big endian
curl.setOpt(Curl.option.URL, "drs.domain-registry.nl"); //
curl.setOpt(Curl.option.PORT, 700);
curl.setOpt(Curl.option.POST, 1);
curl.setOpt(Curl.option.HEADER, true);
curl.setOpt(Curl.option.POSTFIELDS, xml);
curl.setOpt(Curl.option.HTTPHEADER , ['Content-type: text/xml']);
curl.setOpt(Curl.option.TIMEOUT , 180);
curl.setOpt(Curl.option.SSL_VERIFYPEER, true);
curl.setOpt(Curl.option.SSL_VERIFYHOST, false);
curl.perform();
作为回应,我什么也得不到——没有标题,没有数据。
控制面板中的 IP 已准确注册。他们的技术支持给我发了一个手册链接,它描述了一般的 EPP 并说
遇见 vriendelijke groet :-)
更新:感谢 Mike 的提示,确实不应该使用 curl。不知何故,如果是 XML,那么出于习惯,它意味着 HTTP - 但在这里,有一种特殊的偏好,方法......
然而,到目前为止,转换为 TCP 没有任何帮助:
var epp_hello = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'+
'<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"><hello/></epp>';
var xml = bigEndian(epp_hello);
var client = new net.Socket();
client.connect(700, "drs.domain-registry.nl", function(xxml) {
console.log('Connected ', xxml);
client.write(xxml);
}.bind(null,xml));
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy();
});
client.on('close', function() {
console.log('Connection closed');
});
没有数据来自服务器。
使用 tls 而不是 net 时问题已解决:
收到 EPP 问候语