简体   繁体   中英

How to make a POST api call in php

I have been stuck on this for 2 day now. I looked all over the internet for the answer and could not find it.

I need to make a POST request to an api to register users. This is the info I was given.

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"
  }
}

This is what I have so far. No matter what I do it results in an error. I feel it might have something to do with the Access-Token placement. It was hard to find an example that uses a access token. Is this the correct way to make a POST request to an api in php?

$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);

From the info given, it looks like you're just sending the header name wrong (although to be fair, Access-Token isn't a standard header...)

Try

$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)
    )
));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM