我需要发送一些数据来休息网络服务。我已经尝试模拟后端 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 中取得一些领先吗?谢谢
您不能使用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)