如何在PHP中从CURL XML请求接收XML格式的响应


How to Receive response in XML format from CURL XML Request in PHP

我正在尝试在PHP中使用curl发送和接收XML。我想试试通过curl请求连接salesforce。但我面临的问题是字符串,而salesforce则以XML形式返回响应。

我正在发送登录saleforce的XML请求。这是我的脚本

$data='<?xml version="1.0" encoding="utf-8" ?>.....'

$tuCurl = curl_init();
curl_setopt($tuCurl, CURLOPT_URL, "https://login.salesforce.com/services/Soap/u/29.0");
curl_setopt($tuCurl, CURLOPT_PORT , 443);
/*curl_setopt($tuCurl, CURLOPT_VERBOSE,false);
curl_setopt($tuCurl, CURLOPT_HEADER, true);*/
curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($tuCurl, CURLOPT_POST, true); 
curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data);  
/*curl_setopt($tuCurl, CURLOPT_FOLLOWLOCATION, TRUE);*/
curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml; 
charset=UTF- 8","SOAPAction: login", "Content-length: ".strlen($data)));
$tuData = curl_exec($tuCurl);
curl_close($tuCurl);
echo $tuData;
Thanks for any help!

尝试使用此代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close ($ch);

我认为您应该转义$data的版本和编码例如

$data = "<?xml version='"1.0'" encoding='"UTF-8'"?>".$whateverXml;