无法使用php中的cURL从API获得响应

时间:2016-09-17 16:30:49

标签: php xml curl

我试图从API获得响应 - 我必须发送一个xml文档,然后我应该得到另一个xml作为响应,但我得到的是' xml错误没有找到元素&#39 ; ....

这是我在php中的cURL代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'email=' . $email . '&password=' . $password . '&content=' . $xml);
$ex = curl_exec($ch);

不幸的是,当我试图回复$ ex时 - 显示上述错误。 我的所有变量都是正确的,我的xml也是正确的(文档在$ xml变量中给出)。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您正在将内容类型标头设置为 text / xml ,但实际上您尝试将数据发送为 application / x-www-form- urlencoded的即可。要么更正标题,要么只发送 $ xml 变量。

例如:

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   'Content-Type: text/xml',
   'Content-Length: '. strlen($xml))
);
$result = curl_exec($ch);

CURLOPT_RETURNTRANSFER纯粹是为了让远程服务器的响应放在$result而不是回显。