在PHP中使用webservice返回XML

时间:2009-06-10 09:50:09

标签: php xml web-services

我正在使用web服务以XMl形式获得一些结果......这是代码的一部分

public function getXML()
{
    $url=$this->constructURL();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $xml = curl_exec($ch);
    if ($error = curl_error($ch)) {
    echo "Error: $error<br />\n";
    }
    curl_close($ch);
    return $xml;
}


$resultXML = $api->getXML();
echo $resultXML;

当我回应'$ asd'时,除了一个balnk页面之外什么都不做......

但是当我在浏览器中直接使用$ url的值时,会产生XML结果......

任何人都可以建议我哪里出错了???

ADDED .........

当我在curl_exec

之后包含错误报告时

它出错了

错误:SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

我也使用 https :// blahblh for request

2 个答案:

答案 0 :(得分:4)

解决了问题......

因为我使用https://,所以我必须包含一行设置cURL选项的代码

curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,FALSE);

答案 1 :(得分:1)

我不是盲目的 - 你的“getXML”是一个类的方法(即myWebService)。那么,您认为$asd = getXML();应如何运作?

我认为您的代码必须如下所示:

...
$service = new myWebService();
$asd = $service->getXML();
echo $asd;

增加:

我认为,该浏览器不会显示您的XML,因为它默认接收带有内容类型text / html的标头。尝试查看页面源或在echo之前写入

header('Content-type: text/xml');

任何浏览器,假设这是HTML,都应该忽略与HTML不兼容的未知标签。因此,您的XML被解释为未知的非HTML标记。

相关问题