带有特定标头的 REST API 上的 HTTP POST 请求 [PHP]

And*_*rit 3 php

我需要发送一些数据来休息网络服务。我已经尝试模拟后端 API 正常工作,但我只是不知道如何通过 HEADER 授权该 API。

在标题中应该有一个: Authorization设置Bearer token

这是我确实尝试过但没有任何成功的方法。

$host = "www.example.com";
$path = "/path/to/backend";
$arr = array('caseNumber' => '456456787');
$data = json_encode($arr);
$token = "ThisIsSomeLongToken";

header("POST ".$path." HTTP/1.1\r\n");
header("Host: ".$host."\r\n");
header("Content-type: application/json\r\n");
header("Authorization: Bearer ".$token." \r\n");
header("Content-length: " . strlen($data) . "\r\n");
header("Connection: close\r\n\r\n");
header($data);
Run Code Online (Sandbox Code Playgroud)

我是 PHP 网络服务的新手,所以我什至不知道这是否正确,但它不会引发任何错误,也不会对网络服务做任何事情。

我可以希望在带有标题的 PHP REST API 中取得一些领先吗?谢谢

Jan*_*n.J 5

您不能使用header()函数发送 post 请求。你应该使用cURL它。在此处查看文档。
这可能会做你想要的:

$host = "www.example.com";
$path = "/path/to/backend";
$arr = array('caseNumber' => '456456787');
$token = "ThisIsSomeLongToken";

$ch = curl_init();

// endpoint url
curl_setopt($ch, CURLOPT_URL, $host . $path);

// set request as regular post
curl_setopt($ch, CURLOPT_POST, true);

// set data to be send
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arr));

// set header
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Bearer: ' . $token));

// return transfer as string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);
Run Code Online (Sandbox Code Playgroud)