2011-08-31 38 views
2

我想通過使用curl發佈XML數據。我使用這些代碼行:如何在curl中傳遞XML

  $data = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n"; 
    $data.= "<contacts>\r\n"; 
    $data.= "<contact>\r\n"; 
    $data.= "<firstName>$firstName</firstName>\r\n"; 
    $data.= "<lastName>$lastName</lastName>\r\n"; 
    $data.= "<email>$Email_Address</email>\r\n"; 
    $data.= "<status>normal</status>\r\n"; 
    $data.= "<contact>\r\n"; 
    $data.= "</contacts>\r\n"; 

    $url = "https://app.sandbox.icontact.com/icp/a/".$account_id."/c/".$client_folder_id."/contacts"; 
     $handle = curl_init(); 
     curl_setopt($handle, CURLOPT_URL, $url); 
     curl_setopt($handle, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($handle, CURLOPT_POST, true); 
     curl_setopt($handle, CURLOPT_POSTFIELDS,$data); 
     $response = curl_exec($handle); 

當我得到響應,這說明我這個消息:

  <?xml version="1.0" encoding="UTF-8"?> 
      <response> 
     <errors> 
    <error>The XML that was passed in your request was malformed. Please provide valid XML.</error> 
     </errors> 
      </response> 

我需要在XML輸入改變什麼。

謝謝

+0

這個XML代碼RESTClient實現 –

回答

0

它通常是一個問題,您需要在發送它之前對xml進行url編碼。嘗試$data = urlencode($data)

這會給你的輸出如%3C?xml version="1.0" encoding="UTF-8"?%3E

+0

工作正常,但它對XML不同,仍然得到同樣的問題 –

+0

嘗試刪除\ r \ n的好。使用urlencoding嘗試,沒有。 – ghostJago

+1

我找到了解決方案。我使用了http://www.xmlvalidation.com/index.php?id=1&L=0並且fount錯誤是在關閉聯繫人標記 –