1

问题:

我试图让我的网站前端使用 RESTful 后端从我的数据库中获取信息。我在下面的 PHP/cURL 代码适用于除 https://mydomain.com[/anything] 以外的任何 URL,其中 mydomain 是我正在使用的域,[/anything] 是任何子域。它总是只返回一个带有 http 代码 200 和一个空正文的标头,即使我调用一个充满损坏代码的 URL。但是,如果我在我的网络浏览器中输入相同的 URL,那么我会得到预期的输出(在大多数情况下是 JSON 字符串)。

回顾一下:

如果我用我的代码调用 www.google.ca,我会得到构成 www.google.ca 的 XML。好的

如果我使用 Web 浏览器调用 https://mydomain.com/thing,我会得到预期的 JSON 字符串,其中包含来自数据库的信息。优秀的

如果我用我的代码调用 https://mydomain.com/thing,我会得到一个没有正文的标头,显示 http 代码为 200。令人沮丧

代码(从 AbstractActionController 的 indexAction 调用):

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,'https://mydomain.com/thing');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookieHeader);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);

$err = curl_errno ( $ch );
$errmsg = curl_error ( $ch );
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );

curl_close($ch);

我正在使用什么:

PHP5 与 Zend Framework 2 在 Ubuntu 中使用 Eclipse 开发环境

https://mydomain.com/thing 指向 AbstractRESTfulController

编辑:

知道我在 cURL exec 调用之后在 apache2 日志中收到这些错误可能很有用:

[Zend 调试器] 无法接收启动命令

[Zend 调试器] 无法发送消息

4

1 回答 1

0

所以事实证明,这段代码实际上工作得很好,问题与我的系统如何进行身份验证有关。

于 2013-06-26T13:07:23.437 回答