【问题标题】:USING webservice in PHP which returns XML在返回 XML 的 PHP 中使用 Web 服务
【发布时间】:2010-11-01 18:10:16
【问题描述】:

我正在使用 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”时,它只会显示一个空白页面...

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

谁能建议我哪里出错了???

添加.........

当我在 curl_exec 之后包含错误报告时

报错

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

我也使用 https://blahblh 请求

【问题讨论】:

  • cURL 是否可以与任何其他 URL 一起使用?你是否正确设置了error_reporting和display_errors?
  • 是的,我正在使用 yahoo 拼写检查服务...并且 curl 可以正常使用。我还没有设置错误报告呢
  • 在开发过程中,您应该始终显示所有错误、通知等。现在您知道原因了 :-)

标签: php xml web-services


【解决方案1】:

解决了问题....

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

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

【讨论】:

  • 非常感谢 - 我已经尝试解决这个问题好几个小时了。
【解决方案2】:

我不是瞎子——你的“getXML”是一个类的方法(即myWebService)。那么,您认为您的$asd = getXML(); 应该如何工作?

我想你的代码一定是这样的:

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

添加:

我认为,该浏览器只是不显示您的 XML,因为它默认接收带有内容类型 text/html 的标头。试试看页面源码或者写之前回显

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

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

【讨论】:

  • 我知道......我已经为我的服务创建了一个类,并通过一个类的对象调用 getXML......
  • 我还没有发布问题中的所有代码。只有相关部分
  • 当我添加标题时('Content-type: text/xml');我得到了 XML Parsing Error: not well-formed
猜你喜欢
  • 2012-04-05
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
相关资源
最近更新 更多