如何在php中进行POST api调用


How to make a POST api call in php

我已经被困了两天了。我在网上到处找答案,却找不到。

我需要向一个api发出POST请求来注册用户。这是我得到的信息。

url: https://webbsite.com/api/register
HEADERS
..........................................................
Content-Type:application/json
Access-Token: randomaccesstoken
Body
..........................................................
{
  'email' => 'John.doe@gmail.com',
  'firstName' => 'John',
  'lastName' => 'Doe',
  'password' => "mypassword1"
}
Response
..........................................................
201
..........................................................
HEADERS
..........................................................
Content-Type:application/json
BODY
..........................................................
{
  "success": ture,
  "data": {
       "user_id": 1,
       "token": "randomusertoken"
  }
}

这就是我到目前为止所拥有的。无论我做什么都会导致错误。我觉得这可能与Access Token的放置有关。很难找到使用访问令牌的示例。这是向php中的api发出POST请求的正确方式吗?

$authToken = 'randomaccesstoken';
$postData = array(
   'email' => 'John.doe@gmail.com',
   'firstName' => 'John',
   'lastName' => 'Doe',
   'password' => "mypassword1"
);
// Create the context for the request
$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => "Authorization: {$authToken}'r'n".
                    "Content-Type: application/json'r'n",
        'content' => json_encode($postData)
    )
));

    $response = file_get_contents('https://webbsite.com/api/register', FALSE, $context);
    if($response === FALSE){
        die('Error');
    }

    $responseData = json_decode($response, TRUE);

    print_r($responseData);

从给出的信息来看,您似乎只是发送了错误的标头名称(尽管公平地说,Access Token不是标准标头…)

尝试

$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => "Access-Token: {$authToken}'r'n".
                    "Content-Type: application/json'r'n",
        'content' => json_encode($postData)
    )
));