2009-06-10 108 views
0

我使用web服务来获得XML格式的一些结果...这里是代码使用PHP 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:证书验证失败

也荫USIG HTTPS:// blahblh的要求

+1

是否与任何其他URL卷曲的工作?您是否正确设置了error_reporting和display_errors? – 2009-06-10 09:55:18

+0

请格式化你的代码... – Jet 2009-06-10 09:58:27

+0

是的,我使用雅虎SPEL检查服务......和卷曲的作品与它的罚款。此外,我还没有设定错误报告尚未 – Andromeda 2009-06-10 10:00:28

回答

4

解决了这个问题....

,因为我使用https://开头,我必须包含一个单一的代码行里面设置卷曲选项

curl_setopt($ CH,CURLOPT_SSL_VERIFYPEER ,FALSE);

1

我我不是盲目的 - 你 “的getXML” 是的方法类(即myWebService)。那么,你觉得你的$asd = getXML();应该如何工作?

我想你的代码必须是这样的:

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

新增:

我认为,浏览器只是不显示你的XML,因为它收到内容类型文本页眉/ html默认。尝试看看网页的源文件或写呼应

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

之前的任何浏览器,假设这是HTML应该忽略未知的标签不属于HTML兼容。所以你的XML被解释为未知的非HTML标签。