我正在使用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
答案 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标记。