从CURL请求打印XML返回

时间:2016-02-02 09:07:57

标签: php xml curl

我正在使用专为我的客户端构建的Web API。它目前正在使用,但我无法访问已存在的代码,因此我必须重写cURL请求。

响应是XML,但我无法阅读它。这是我的代码:

$url = "http://www.url.com/";
$input_xml = "<test>data</test>";

//setting the curl parameters.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POSTFIELDS,
            "xmlRequest=" . $input_xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);

$data = curl_exec($ch);
curl_close($ch);
var_dump($data);
$oXML = new SimpleXMLElement($data);

foreach($oXML->entry as $oEntry){
    echo $oEntry->title . "\n";
}

执行var_dump($data)时,我收到此输出:string(45) "003 OK "。只看到6个字符,当var_dump告诉我应该有45个。

$oXML代码给出了以下错误:

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/mypath/file.php:31 Stack trace: #0 /home/mypath/file.php(31): SimpleXMLElement->__construct('<studio>003</st...') #1 {main} thrown in /home/mypath/file.php on line 31

在查看错误的这一部分时:__construct('<studio>003</st...')似乎响应中确实存在XML。 <studio>003</studio>是API应该提供的预期输出的开始。

如何从cURL请求中获取原始输出?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。 API仅返回此<studio>003</studio><ip_check>OK</ipcheck>,您无法使用simplexml_load_string加载此值。我不得不在它周围添加一个节点,所以我基本上这样做了:

$data = '<data>'.$data.'</data>';