发送带有 http 标头的 curl 请求

Posted

技术标签:

【中文标题】发送带有 http 标头的 curl 请求【英文标题】:send curl request with http header 【发布时间】:2016-11-10 21:41:27 【问题描述】:

我想将带有 curl 的标头发送到 https site 以获取用户信息。但没有任何回报。我更改标题但不起作用:(。但是当我使用此site 进行在线请求时,工作正常。下面是我的代码

$api_url = 'https://api.fax.ir/v1/accounts/selfe';
    $accessToken = get_option('faxir_access_token');
    $ch = curl_init($api_url);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Authorization: Bearer '.$accessToken,
        'x-faxir-clientid: '.$this->client_id
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_VERBOSE,1);
    $output = curl_exec($ch);
    curl_close($ch);
    echo $output;

我知道标题设置可能不正确,但我不知道如何更改标题?我用谷歌搜索并测试了很多方法,但都不起作用:(。对不起我的英语不好。

顶部代码不返回任何内容。

【问题讨论】:

我删除了用户代理,但也不起作用。 user-agent 是我的选择,而不是 nessary 。问题编辑 您已经用自己的令牌替换了“faxir_access_token”,对吧? 是的。我替换但不工作,但在“www.hurl.it”工作完美!!! 我认为是因为我的 curl 标头设置不正确 您需要向 API 提供者寻求一些支持。他们肯定提供了一些示例来说明如何从端点获取数据? 【参考方案1】:

除了我们的 cmets 交换之外,您还需要进行一些调试 - 试试这个,然后在下面的 cmets 中写下您看到的内容。看到您的评论后,我会更新此答案。

$api_url = 'https://api.fax.ir/v1/accounts/selfe';
$accessToken = get_option('faxir_access_token');
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$accessToken,
    'x-faxir-clientid: '.$this->client_id
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_VERBOSE,1);
$output = curl_exec($ch);
echo "Code:".curl_getinfo($ch, CURLINFO_HTTP_CODE)."<br>";
echo "Error Number:".curl_errno($ch)."<br>";
echo "Error String:".curl_error($ch);
curl_close($ch);
echo $output;

好的,感谢您的检查 - 我建议试试这个:https://***.com/a/21114601/2429318

【讨论】:

代码:0,错误号:60,错误字符串:SSL证书问题:无法获取本地颁发者证书 编辑添加pem文件后返回:Code:403,Error Number:0,Error String:"data":null,"error":"domain":"authorization","code ":"unauthorized","message":"您无权获取用户信息。" @user3243573 - 太棒了!您现在正在与 API 通信并获取数据响应,因此您的问题已解决。 403 错误表明您无权使用您拥有的凭据/令牌访问该端点的数据,但您需要为此寻求 API 提供者的帮助。请您投票并接受我的回答吗?谢谢

以上是关于发送带有 http 标头的 curl 请求的主要内容,如果未能解决你的问题,请参考以下文章

发送带有自定义 HTTP 标头的跨域请求时禁用预检 OPTION 请求

如何发送带有标头参数的 HTTP 请求?

向服务器发送请求时,如何查看 curl 生成的请求标头?

我无法在 Angular 4 上向 laravel api 发送带有标头的 http 请求

如何在 PHP 的 cURL POST HTTP 请求中包含授权标头?

带有授权令牌标头的角度 $http GET 请求