【问题标题】:CURL Post request yields in error '{"error":"invalid_request"}' (length=27)CURL Post 请求产生错误 '{"error":"invalid_request"}' (length=27)
【发布时间】:2021-12-01 00:06:29
【问题描述】:

CURL Post 请求产生错误 '{"error":"invalid_request"}' (length=27) 这是我的代码

    $url="https://..................."; 
    $authorization=""; //base64 string TE1TQXBpOkxNUContinue...=
    $curl = curl_init();
    $auth_data = array(
      'scope'   => 'LMSApi LMSRead',
      'grant_type'      => 'client_credentials'
    );
    $ops=array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_SSL_VERIFYHOST =>false,
      CURLOPT_SSL_VERIFYPEER => false,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_POSTFIELDS=>$auth_data,
      CURLOPT_HTTPAUTH=> CURLAUTH_BASIC,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_HTTPHEADER => array(
      'Content-Type'=> 'application/x-www-form-urlencode',
      'Authorization'=> 'Basic '.$authorization
      )
    );
    curl_setopt_array($curl,$ops);
    $response = curl_exec($curl);
    var_dump($response);
    curl_close($curl);

当使用邮递员时,它可以工作,但在使用上述代码时总是返回 false。不知道我在做什么错。curl_error($ch) 导致空字符串

需要帮助

【问题讨论】:

  • 尝试删除Content-Type。也尝试删除空的CURLOPT_ENCODING
  • 都试过了,但都没有成功

标签: php curl post authorize


【解决方案1】:

如果有人遇到同样的问题,以下是解决方案。

'grant_type=client_credentials&scope=specify scope' 直接传递给 CURLOPT_POSTFIELDS 而不是数组解决了我的问题。现在的代码如下所示。

$url="https://something.com";   
$headerpost=array(
  'Content-Type: application/x-www-form-urlencoded',
  'Authorization: Basic yourbase64string'
);

 $ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials&scope=LMSApi LMSRead');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headerpost);

$result = curl_exec($ch);
$jsonresult=json_decode($result,true);
curl_close($ch);

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多