Kennt jemand den richtigen Weg zur post
Verwendung von JSON Guzzle
?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Ich erhalte eine internal server error
Antwort vom Server. Es funktioniert mit Chrome Postman
.
'json' => $data
: stackoverflow.com/a/44154428/842768Antworten:
Für Guzzle 5 & 6 machen Sie es so:
Docs
quelle
RequestOptions
Konstanten für die Options-Array-Schlüssel zu verwenden (GuzzleHttp\RequestOptions::JSON
in diesem Fall). Dadurch lassen sich Tippfehler leichter erkennen, da sie plötzlich zu Benachrichtigungen werden, anstatt nur stille Fehler, die darauf warten, Probleme zu verursachen.jsson
z. B.) führt jedoch nicht zu einem Fehler, und es kann einige Zeit dauern, bis Sie Ihren Tippfehler gefunden haben.Für Guzzle <= 4 :
Es ist eine rohe Post-Anfrage, also hat das Einfügen des JSON in den Body das Problem gelöst
quelle
$client->post($url, ['body' => $string, 'headers' => ['Content-type' => 'application/json']]);
'json' => $data
: stackoverflow.com/a/44154428/842768Der einfache und einfache Weg (guzzle6):
Um den Antwortstatuscode und den Inhalt des Körpers zu erhalten, habe ich Folgendes getan:
quelle
Dies funktionierte bei mir (mit Guzzle 6)
quelle
quelle
['json' => $body]
ist der bessere Weg, wie in Michaels Antwort erwähnt.$res->json();
funktioniert nur in Guzzle 5.3. Es wurde in Version 6 entfernt.json_decode()
stattdessen.quelle
Dies funktioniert bei mir mit Guzzle 6.2:
Laut Dokumentation fressen Sie den json_encode
quelle
Siehe Dokumente .
quelle
PHP-Version: 5.6
Symfony-Version: 2.3
Guzzle: 5.0
Ich hatte kürzlich eine Erfahrung mit dem Senden von JSON mit Guzzle. Ich benutze Symfony 2.3, damit meine Guzzle-Version etwas älter sein kann.
Ich werde auch zeigen, wie man den Debug-Modus verwendet, und Sie können die Anfrage sehen, bevor Sie sie senden.
Als ich die Anfrage wie unten gezeigt machte, bekam ich die erfolgreiche Antwort;
quelle
Die Antwort von @ user3379466 kann
$data
wie folgt funktionieren :Was unser Projekt brauchte, war das Einfügen einer Variablen in ein Array innerhalb der JSON-Zeichenfolge, was ich wie folgt tat (falls dies jemandem hilft):
Also mit zu
$existing_variable
sein, sagen wir, 90210, erhalten Sie:Erwähnenswert ist auch, dass Sie möglicherweise auch das festlegen möchten,
'Accept' => 'application/json'
falls der Endpunkt, den Sie treffen, sich um solche Dinge kümmert.quelle
$data
indem Siejson_encode
:$data = json_encode(array('collection' => $existing_variable));
Die obigen Antworten haben bei mir irgendwie nicht funktioniert. Aber das funktioniert gut für mich.
quelle
Verwenden Sie dies einfach, es wird funktionieren
quelle
@ user3379466 ist korrekt, aber hier schreibe ich vollständig um:
--- Lösung für * Guzzle 6 * --- -Paket, das Sie benötigen:
quelle