2013-08-29 55 views
1

我一直在做一些PHP最近連接EPP服務器。 當我通過一個變量在發送XML到EPP服務器例如錯誤2001使用simplexml_loadfile發送XML

$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>'; 

服務器respondes精細與適當的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> 

任何想法的迴應?

回答

0

根據RFC 5730

2001 - 命令語法錯誤

當服務器接收到格式不正確的命令元素此響應碼必須返回。

這意味着您的XML無效。如果你仔細了,你可以看到你打開標籤不會在下面一行的結束標記相匹配:

<pw>XXXXpw> 
     ^

修改成:

<pw>XXXX</pw> 

,你應該罰款。


UPDATE:

看來,當您使用simplexml_load_file它解釋XML文件作爲一個對象,這是存在的。在我看來,服務器需要原始的XML作爲輸入,並且simplexml_load_file發送了一個對象。

要解決此問題,您可以只需file_get_contents即可獲取XML文件的內容,然後像平常一樣發送它。

請注意,這可能不是最好的方法,但這可以解決您的問題。

祝你好運!

+0

對不起,但錯過了<當我輸入XXX來隱藏密碼。 – LefterisL

+0

當我嘗試通過simpleXML_load發送它時出現問題 不當我通過代碼將XML傳遞給變量時。 – LefterisL

+0

@TerisL:啊,我明白了。你如何將變量發送到服務器?另外,你是否在變量上使用'simplexml_load_string()'來將它解釋爲一個對象,或者你只是將它作爲原始XML發送?如果你正在做後者,那麼這可能就是你的代碼無法工作的原因。 '$ nxml = simplexml_load_file('hello.xml');''之後' –