1

我最近一直在做一些 PHP 来连接 EPP 服务器。例如,当我通过变量将 xml 发送到 EPP 服务器时

$nxml ='<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
epp-1.0.xsd">
<command>
<login>
<clID>XXXX</clID>
<pw>XXXX<pw>
<options>
<version>1.0</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
</svcs>
</login>
<clTRID>nick-12345</clTRID>
</command>
</epp>';

服务器使用正确的 XML 响应良好。虽然现在我正在尝试像这样通过 simplexml_loadfile 传递 xml

    $nxml = simplexml_load_file('login.xml');

我收到来自服务器的响应

<response>
  <result code="2001">
       <msg lang="en">Command syntax error</msg>
  </result>
  <extension>
       <extcommon:resdata xmlns:extcommon="urn:ics-forth:params:xml:ns:extcommon-1.0" xsi:schemalocation="urn:ics-forth:params:xml:ns:extcommon-1.0 extcommon-1.0.xsd">
  </extension>
  <trid>
       <svtrid>607c6b1f-2093-4eef-9756-8d9e9f0689cb-72387</svtrid>
</trid>
</response>

有任何想法吗?

4

1 回答 1

0

根据RFC 5730

2001 - 命令语法错误

当服务器接收到格式不正确的命令元素时,必须返回此响应代码。

这意味着您的 XML 无效。如果您仔细观察,您会发现您的开始标签与以下行中的结束标签不匹配:

<pw>XXXXpw>
        ^

将其更改为:

<pw>XXXX</pw>

你应该没事。


更新:

当您使用simplexml_load_file将 XML 文件解释为对象时,似乎会发生这种情况。在我看来,服务器需要原始 XML 作为输入,并且simplexml_load_file您正在发送一个对象。

要解决此问题,您可以只file_get_contents获取 XML 文件的内容,然后像往常一样发送它。

请注意,这可能不是最好的方法,但这可以解决您的问题。

祝你好运!

于 2013-08-29T12:15:57.980 回答