PHP cURL向API发送带有授权头字段的POST请求

ef1yzkbh  于 2022-11-28  发布在  PHP
关注(0)|答案(1)|浏览(281)

我是一个初学者在PHP和工作与API。我需要写一个函数在PHP发送一个POST请求到一个API。在这个请求中,我需要包括一个HTTP授权字段与我的用户名和密码。API必须给我一个OauthToken。在寻找解决方案,我知道使用cURL是很适合在这种情况下,但遗憾的是,它不工作。
下面是我的代码:

$login = 'mylog';
$password = 'myPass';
$url = 'https://example.com/oauth/accessToken';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");

$result = curl_exec($ch);
if ($result == false)
    echo $ch;

curl_close($ch);  
echo($result);

谢谢你的帮助。
我期待一个json文件回来,但我什么都没有得到。我想知道我的代码中缺少了什么。谢谢

63lcw9qa

63lcw9qa1#

我知道我的代码有什么问题。我把解决方案贴在这里,以防将来能帮助到别人。

$info = file_get_contents("./config/GenerateKeyInfo.json");
        $info = json_decode($info);
        $param =
        '{
            "grant_type" : "client_credentials"
        }';

        $curl = curl_init();
        curl_setopt_array(
            $curl, 
            [
                CURLOPT_URL => $info->endpoint,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => $param,
                CURLOPT_USERPWD => "$info->user:$info->password",
                CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
                CURLOPT_HTTPHEADER => array('Content-Type : application/json'),
            ]
        );

因为我是一个完全的php和web开发初学者。我不明白我的API要求我在我的post请求中发送某种json文件。

相关问题