2011-08-31 34 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错误是在关闭联系人标记 –