1

私は最近、EPP サーバーに接続するためにいくつかの PHP を実行しています。たとえば、変数を介して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_fileXMLファイルをオブジェクトとして解釈する whichを使用すると、これが発生しているようです。simplexml_load_fileサーバーは入力として生の XML を必要とし、オブジェクトを送信しているように思えます。

この問題を解決するfile_get_contentsには、XML ファイルの内容を取得して、通常どおり送信します。

これは最善の方法ではないかもしれませんが、これで問題が解決する可能性があることに注意してください。

幸運を!

于 2013-08-29T12:15:57.980 に答える