2016-09-21 6 views
1

konsumieren Ich versuche, eine JSON API mit PHP zu konsumieren.Eine JSON API mit PHP

Ich habe versucht, ROTATION mit einer Antwort zu erhalten:

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

Dies gibt mir keine Antwort im Terminal.

ich auch E-Mail für Benutzername versucht habe, tauschen:

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

Ich habe folgend in einer PHP-Datei geschrieben, aber das gibt mir einen 404-Fehler im Browser.

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

Ich bin mir nicht sicher, wo ich hier falsch liege. Anweisungen vom API-Entwickler lauten wie folgt:

Die API verfügt über eine grundlegende JWT-Sicherheit, also ein erstes Anforderungs-Token.

POST-Anfrage an: http://104.239.176.130:3000/api/users/authenticate

+0

haben Sie versucht, datei_ge t_contents (url) statt curl? –

+0

** POST ** Anfrage an .... soweit ich das beurteilen kann, machen Sie nur GET-Anfragen. Und Sie sollten eine richtige HTTP-Bibliothek verwenden, anstatt zu versuchen, Ihre eigenen zu rollen. Ich werde dir viel Zeit sparen. –

Antwort

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 

versuchen, dies in Terminal und sehen, ob Sie

In PHP CURLOPT_POSTFIELDS statt CURLOPT_USERPWD der Benutzer eine beliebige reponse haben senden/

+1

Danke, dass Sie mich mit dem folgenden Hinweis in die richtige Richtung wiesen: Ich konnte ein Token zurück erhalten. curl -H "Akzeptieren: application/json" -H "Inhaltstyp: application/json" --data '{"email": "myusername", "passwort": "mypassword"}' http: // 104.239.120.178:3000/api/users/authenticate –

0

versuchen, dies passieren

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