【问题标题】:How to execute curl url from php如何从php执行curl url
【发布时间】:2017-02-24 04:24:27
【问题描述】:

我正在尝试通过 curl 从 php 调用一个 url,但服务器没有响应。

以下是我的网址:

$url = 'https://id:secret@auth.sphere.io/oauth/token \ -X POST \ -d "grant_type=client_credentials&scope=manage_project:test"';

卷曲代码

$auth = curl_init($url);
curl_setopt($auth, CURLOPT_POST, true);
curl_setopt($auth, CURLOPT_HEADER, false);
curl_setopt($auth, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($auth);
curl_close($auth);
print_r($response);

当我在终端中执行相同的 url 时,会从服务器获取响应。 curl代码有什么问题。请帮忙。

【问题讨论】:

  • URL 看起来不对 = 似乎是 curl 的命令行选项
  • CURL 已安装在您的网络服务器中,对吧?
  • 是的,curl 已安装
  • 我在你的代码中没有看到data参数
  • @AkkapongKajornwongwattana 什么数据参数??

标签: php curl


【解决方案1】:

检查卷曲片段

 $auth = curl_init("https://id:secret@auth.sphere.io/oauth/token");
    curl_setopt($auth, CURLOPT_POST, true);
    curl_setopt($auth, CURLOPT_HEADER, false);
    curl_setopt($auth, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($auth,CURLOPT_POST, 2);
    curl_setopt($auth,CURLOPT_POSTFIELDS, "grant_type=client_credentials&scope=manage_project:test");
    $response = curl_exec($auth);
    curl_close($auth);
    print_r($response);

提供正确的凭据以使身份验证成功

【讨论】:

    【解决方案2】:

    使用文档 - 这应该有效。注意正确的 URL 并正确传递 post 参数

    $auth = curl_init("https://auth.sphere.io/oauth/token");
    curl_setopt($auth, CURLOPT_POST, true);
    curl_setopt($auth, CURLOPT_HEADER, false);
    curl_setopt($auth, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($auth,CURLOPT_POST, 2);
    curl_setopt($auth,CURLOPT_USERPWD, "id:secret");
    curl_setopt($auth,CURLOPT_POSTFIELDS, "grant_type=client_credentials&scope=manage_project:test");
    $response = curl_exec($auth);
    curl_close($auth);
    print_r($response);
    

    【讨论】:

    • 试过了。出现Missing required parameter: grant_type 错误。
    • 这是来自服务器的响应吗?
    • 还是一样。 {"statusCode":400,"message":"Missing required parameter: grant_type.","errors":[{"code":"invalid_request","message":"Missing required parameter: grant_type."}],"error":"invalid_request","error_description":"Missing required parameter: grant_type."}
    • 刚刚注意到我在 cut'n'paste 中犯了一个错误
    【解决方案3】:

    @Ed Heal - 修改你的代码应该可以工作

    $auth = curl_init("https://auth.sphere.io/oauth/token");
    curl_setopt($auth, CURLOPT_POST, true);
    curl_setopt($auth, CURLOPT_HEADER, false);
    curl_setopt($auth, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($auth,CURLOPT_POST, 2);
    curl_setopt($auth,CURLOPT_USERPWD, "id:secret");
    curl_setopt($auth,CURLOPT_POSTFIELDS, "grant_type=client_credentials&scope=manage_project:test");
    $response = curl_exec($auth);
    curl_close($auth);
    print_r($response);
    

    $ch 是问题,因为 curl 是用 $auth 初始化的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 2011-02-17
      • 2017-05-25
      相关资源
      最近更新 更多