Вопрос или проблема
Я ломаю голову над созданием базовой схемы для входа в реестр ESNIC.
Это мой XML
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<login>
<clID>$login</clID>
<pw>$password</pw>
<options>
<version>1.0</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
<svcExtension>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
</svcExtension>
</svcs>
</login>
<extension></extension>
<clTRID>cid-login-request-etewr31</clTRID>
</command>
</epp>
Но в ответе я вижу только это
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="2001">
<msg lang="es">
<![CDATA[
Ошибка, некорректный XML: org.xml.sax.SAXParseException; номер строки: 20; номер столбца: 26; cvc-complex-type.2.4.b: Содержимое элемента 'extension' не завершено. Ожидался один из '{WC[##other:"urn:ietf:params:xml:ns:epp-1.0"]}'.]]>
</msg>
</result>
<trID>
<clTRID>000</clTRID>
<svTRID>1730656826070</svTRID>
</trID>
</response>
</epp>
Я не могу найти никаких документов, которые подсказывали бы мне, что должно быть внутри блока extension.
Ответ или решение
Чтобы успешно создать запрос на вход в реестр ESNIC с использованием XML, важно понимать структуру и соглашения, применяемые в протоколе EPP (Extensible Provisioning Protocol). Основная задача заключается в обеспечении корректности XML-структуры, а также в соответствии требованиям, описанным в спецификациях.
Структура XML-запроса
Исходя из вашего примера, наблюдаем следующую структуруXML-запроса:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<login>
<clID>$login</clID>
<pw>$password</pw>
<options>
<version>1.0</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
<svcExtension>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
</svcExtension>
</svcs>
</login>
<extension></extension>
<clTRID>cid-login-request-etewr31</clTRID>
</command>
</epp>
Ошибка в ответе
Вы получаете ответ с ошибкой, указывающей на некорректное заполнение блока <extension>
. Текст ошибки указывает на то, что содержимое элемента extension
не завершено, и ожидается один из элементов, входящих в группу {WC[##other:"urn:ietf:params:xml:ns:epp-1.0"]}
.
Разбор блока <extension>
В блоке <extension>
можно добавлять дополнительные параметры запроса, которые могут потребоваться для определённых протоколов или сервисов. Однако если в вашем случае не требуется включение каких-либо дополнительных функций, этот блок может быть оставлен пустым, но при этом необходимо добавить хотя бы один элемент, соответствующий спецификации.
Рекомендации по исправлению ошибки
-
Удалите пустой элемент
<extension>
: Если вы не используете никаких расширений, его не нужно включать в запрос. Таким образом, структура будет выглядеть корректно. -
Если требуется добавить расширение, добавьте элемент, соответствующий требуемому стандарту или спецификации. Пример заполненного блока:
<extension>
<someExtension xmlns="urn:ietf:params:xml:ns:someExtension-1.0">
<exampleElement>exampleValue</exampleElement>
</someExtension>
</extension>
Корректный XML-запрос
С учётом вышеизложенных рекомендаций ваш скорректированный XML-запрос должно выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<login>
<clID>$login</clID>
<pw>$password</pw>
<options>
<version>1.0</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
<svcExtension>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
</svcExtension>
</svcs>
</login>
<clTRID>cid-login-request-etewr31</clTRID>
</command>
</epp>
Заключение
Убедитесь, что вы всегда обращаетесь к актуальным спецификациям EPP и документации ESNIC. При необходимости обращайтесь к поддержке техподдержки ESNIC для получения более подробной информации по правильному формату и структуре XML-запросов. Это поможет избежать ошибок и наладить корректное взаимодействие с реестром.