it-swarm.com.de

Senden POST Daten über Raw Json mit Postman

Ich habe Postman (den, der sich nicht in Chrome öffnet) und ich versuche, eine POST - Anfrage mit rohem Json auszuführen.

Im Body-Tab habe ich "raw" und "JSON (application/json)" mit diesem Body ausgewählt:

{
    "foo": "bar"
}

Für die Kopfzeile habe ich 1, Content-Type: application/json

Auf der Seite PHP mache ich gerade print_r($_POST); und erhalte ein leeres Array.


Wenn ich jQuery verwende und Folgendes mache:

$.ajax({
    "type": "POST",
    "url": "/rest/index.php",
    "data": {
        "foo": "bar"
    }
}).done(function (d) {
    console.log(d);
});

Ich bekomme wie erwartet:

Array
(
    [foo] => bar
)

Warum arbeitet sie nicht mit Postman zusammen?


Postman-Screenshots:

 enter image description here

und Kopfzeile:

 enter image description here

51
smerny

Im Gegensatz zu jQuery müssen Sie es in PHP dekodieren, um rohe JSON lesen zu können.

print_r(json_decode(file_get_contents("php://input"), true));

php://input ist ein schreibgeschützter Stream, mit dem Sie Rohdaten aus dem Anforderungstext lesen können.

$_POST ist eine Formularvariable. In form müssen Sie zu postman radiobutton wechseln und dann Folgendes verwenden:

foo=bar&foo2=bar2

Um json mit jquery zu posten:

$.ajax({
    "url": "/rest/index.php",
    'data': JSON.stringify({foo:'bar'}),
    'type': 'POST',
    'contentType': 'application/json'
});
17
meda

die Antwort von meda ist absolut legitim, aber als ich den Code kopiert hatte, bekam ich einen Fehler!

Irgendwo im "php://input" gibt es ein ungültiges Zeichen (vielleicht eines der Anführungszeichen?).

Als ich den "php://input"-Code manuell eingegeben habe, hat er funktioniert

7
CoredusK

Ich hatte das gleiche Problem, der folgende Code hat für mich funktioniert:

$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);

4
Neo

Installieren Sie die native Postman-App. Die Chrome-Erweiterung wurde nicht mehr empfohlen

2

Aktivieren Sie einfach die Option JSON in der Dropdownliste neben binär. wenn Sie auf roh klicken. Das sollte reichen

 skill synon pass json to postman

1
Itachi