2016-09-21 3 views
1

Я пытаюсь использовать JSON API с PHP.Использование API JSON с PHP

Я попытался с помощью CURL, чтобы получить ответ:

curl 'http://104.239.130.176:3000/api/users/authenticate?email=my_username_here&password=my_password' 

Это не дает мне никакого ответа в терминале.

Я также попытался обмен электронной почты для пользователя:

curl 'http://104.239.130.176:3000/api/users/authenticate?username=my_username_here&password=my_password' 

Я написал следующее в PHP файл, но это дает мне сообщение об ошибке 404 в браузере.

<?php 
    // Parameters 
    $tpm_base_url = 'http://104.239.176.130:3000/'; // ending with/
    $req_uri = 'api/users/authenticate'; // GET /passwords.json 
    $username = 'my_username'; 
    $password = 'my_password'; 

    // Request headers 
    $headers = array( 
    'Content-Type: application/json; charset=utf-8' 
); 

    // Request 
    $ch = curl_init($tpm_base_url . $req_uri); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); // Includes the header in the output 
    curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); // HTTP Basic Authentication 
    $result = curl_exec($ch); 
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 

    // Get headers and body 
    list($headers, $body) = explode("\r\n\r\n", $result, 2); 
    $arr_headers = explode("\r\n", $headers); 
    $arr_body = json_decode($body, TRUE); 

    // Show status and array of passwords 
    echo 'Status: ' . $status . '<br/>'; 
    print_r($arr_body); 

Я не уверен, где именно здесь я ошибаюсь. Инструкции от разработчика API следующие:

API имеет базовый токен запроса безопасности JWT. Запрос

POST для: http://104.239.176.130:3000/api/users/authenticate

+0

Вы пытались file_ge t_contents (url) вместо завитка? –

+0

** POST ** просьба .... насколько я могу судить, вы просто делаете запросы GET. И вы должны использовать правильную библиотеку HTTP вместо того, чтобы пытаться катиться самостоятельно. Собираюсь сэкономить много времени. –

ответ

1
curl -H "Accept: application/json" -H "Content-Type: application/json" --data "username=my_username_here&password=my_password" http://104.239.176.130:3000/api/users/authenticate 

попробовать это в терминале, и если у вас есть какие-либо réponse

В PHP CURLOPT_POSTFIELDS используют вместо CURLOPT_USERPWD, чтобы отправить пользователю/пасс

+1

Спасибо, что направили меня в правильном направлении, используя следующее, я смог получить токен назад. curl -H "Accept: application/json" -H "Content-Type: application/json" --data '{"email": "myusername", "password": "mypassword"}' http: // 104.239.120.178:3000/api/users/authenticate –

0

попробовать это

$ch = curl_init($tpm_base_url . $req_uri); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); // Includes the header in the output 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, 
      "email=$username&password=$password"); 
$result = curl_exec($ch); 
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 
Смежные вопросы