2016-04-05 3 views
1

Я застрял на этом в течение 2 дней. Я посмотрел по всему Интернету на ответ и не смог его найти.Как сделать POST-вызов api в php

Мне нужно сделать запрос POST на api, чтобы зарегистрировать пользователей. Это информация, которую я получил.

url: https://webbsite.com/api/register 

HEADERS 
.......................................................... 
Content-Type:application/json 
Access-Token: randomaccesstoken 

Body 
.......................................................... 
{ 
    'email' => '[email protected]', 
    'firstName' => 'John', 
    'lastName' => 'Doe', 
    'password' => "mypassword1" 
} 

Response 
.......................................................... 
201 
.......................................................... 
HEADERS 
.......................................................... 
Content-Type:application/json 

BODY 
.......................................................... 
{ 
    "success": ture, 
    "data": { 
     "user_id": 1, 
     "token": "randomusertoken" 
    } 
} 

Это то, что у меня есть до сих пор. Независимо от того, что я делаю, это приводит к ошибке. Я чувствую, что это может иметь какое-то отношение к размещению Access-Token. Трудно было найти пример, в котором используется токен доступа. Это правильный способ сделать запрос POST для api в php?

$authToken = 'randomaccesstoken'; 
$postData = array(
    'email' => '[email protected]', 
    '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); 
+1

Синтаксис выглядит хорошо, что должно отправить запрос POST. Единственное, что я заметил, это то, что предоставленная информация запрашивает заголовок как токен доступа, тогда как вы передаете авторизацию. – iainn

+0

Мне просто нужно изменить формулировку от авторизации до токена доступа? – Tsea

+0

Ahh Это работало с изменением авторизации на Access-Token. Отправьте его как и ответьте, чтобы я мог принять его. – Tsea

ответ

2

Из информации данного, это выглядит, как вы просто передать имя заголовка неправильно (хотя, чтобы быть справедливым, Access-Токен не стандартный заголовок ...)

Попробуйте

$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) 
    ) 
)); 
Смежные вопросы