場景: 將使用php生成的XML通過cURL發送到外部服務器進行解析。cURL在使用標籤屬性時錯誤地發送XML
問題: XML包含標籤屬性使用捲曲
代碼發送時會出現問題:
$generated_xml =
-- NOTE: NOT THE SYNTAX USED IN THE CODE, SPLIT FOR EASE OF READING --
"<xconnect>
<report>
<id>contact_get</id>
<input name='email'><![CDATA[EMAIL_CAPTURED_FROM_INPUT]]></input>
<input name='id'></input>
</report>
</xconnect>";
$aCurlHeaders = array ("Content-Type: text/xml");
$hCurl = curl_init();
-- NOTE: HTTPHEADER OPTION FAILS (page returns 'no xml sent') --
curl_setopt($hCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($hCurl, CURLOPT_POST, true);
curl_setopt($hCurl, CURLOPT_CONNECTTIMEOUT, 120);
//curl_setopt($hCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($hCurl, CURLOPT_URL, "SITE_URL");
curl_setopt($hCurl, CURLOPT_POSTFIELDS, "XMLDOC=$generated_xml");
$sResp = curl_exec($hCurl);
curl_close($hCurl);
if($sResp){ echo $sResp; }
進一步瞭解詳細:
我不知道了一個關於捲曲的巨大數量
當發送到通過cURL解析XML的頁面時,它會返回'XML文檔失敗解析',但是當使用通過POST表單直接提交給服務器的測試表單時,它會正常工作並返回正確的數據。
該問題與<input>
標記的屬性相關聯,刪除它們可以使xml在服務器上正確解析,但由於需要屬性來從服務器檢索數據,因此將返回空白。
我沒有訪問XML的解析頁面,雖然有一個聯繫人可能能夠改變編碼,不需要屬性,但我本以爲這將有可能做到這一點,而無需做變化。
問題:
爲什麼發送的HTTPHeader導致解析器想發送的信息是不是XML,它是跟我發送XML的方式嗎?
是否有可能從PHP解析塊的XML(如果這是問題的一部分)
我見過之前使用捲曲屬性的例子是什麼呢這個
感謝:
感謝
的回覆,它似乎只是在我身邊使用'urlencode()'而不需要在另一端進行解碼。我不會質疑它。 – andyface 2009-12-10 10:49:46