【发布时间】:2022-01-05 18:06:27
【问题描述】:
我正在尝试从 API 检索数据,虽然我的一个调用工作正常,但所有其他调用最终都没有输出,这使得调试变得困难。
我在我的 cURL 请求中填充了许多这样的参数:
curl_setopt($this->__ch, CURLOPT_URL, $apiUrl );
curl_setopt($this->__ch, CURLOPT_HEADER, 1);
curl_setopt($this->__ch, CURLOPT_USERAGENT, $_SERVER ['HTTP_USER_AGENT']);
curl_setopt($this->__ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->__ch, CURLOPT_NOBODY, 1);
curl_setopt($this->__ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($this->__ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($this->__ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->__ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($this->__ch, CURLOPT_VERBOSE, true);
curl_setopt($this->__ch, CURLOPT_VERBOSE, 1);
// only when access token is available
curl_setopt($this->__ch, CURLOPT_HTTPHEADER, "access-token:XXXX");
$result = curl_exec($this->__ch);
$info = curl_getinfo($this->__ch);
如果我对 $this 使用以下内容,它会起作用:
BanggoodAPI Object
(
[__apiKey:BanggoodAPI:private] => ******
[__apiSecret:BanggoodAPI:private] => ******
[__domain:BanggoodAPI:private] => https://affapi.banggood.com/
[__accessToken:BanggoodAPI:private] =>
[__task:BanggoodAPI:private] => getAccessToken
[__method:BanggoodAPI:private] => GET
[__params:BanggoodAPI:private] => Array
(
[api_key] => ******
[noncestr] => ******
[timestamp] => ******
[signature] => ******
)
[__lang:BanggoodAPI:private] => en-GB
[__currency:BanggoodAPI:private] => USD
[__waitingTaskInfo:BanggoodAPI:private] => Array
(
[task] => coupon/list
[method] => GET
[params] => Array
(
[category_id] => 0
[type] => 2
)
)
[__ch:BanggoodAPI:private] => Resource id #1
[__curlExpireTime:BanggoodAPI:private] => 10
)
我得到一个 JSON 作为回报,这是预期的行为。
如果我随后使用以下对象,我将一无所获:
BanggoodAPI Object
(
[__apiKey:BanggoodAPI:private] => ******
[__apiSecret:BanggoodAPI:private] => ******
[__domain:BanggoodAPI:private] => https://affapi.banggood.com/
[__accessToken:BanggoodAPI:private] => ******
[__task:BanggoodAPI:private] => coupon/list
[__method:BanggoodAPI:private] => GET
[__params:BanggoodAPI:private] => Array
(
[category_id] => 0
[type] => 2
[lang] => en-GB
[currency] => USD
)
[__lang:BanggoodAPI:private] => en-GB
[__currency:BanggoodAPI:private] => USD
[__waitingTaskInfo:BanggoodAPI:private] => Array
(
)
[__ch:BanggoodAPI:private] => Resource id #1
[__curlExpireTime:BanggoodAPI:private] => 10
)
如果我尝试在浏览器中直接访问 cURL 目标并在标头中添加访问令牌,它工作得非常好,这意味着端点正在工作并且我的 PHP 存在问题。
对于第二个对象,$result 是空的,$info 也是空的。就像请求被完全忽略了一样。假设端点在所有情况下都会给我一个 json(例如:告诉我有错误)。
你有什么想法可以解释为什么输出是空的吗?还是会迫使 PHP 向我提供有关正在发生的事情的更多信息?
谢谢!
【问题讨论】: