Ich versuche, einen Wrapper um eine API zu schreiben, die sich in meiner Firma entwickelt. Es ist erholsam, und mit Postman kann ich eine Post-Anfrage an einen Endpunkt wie http://subdomain.dev.myapi.com/api/v1/auth/
mit einem Benutzernamen und einem Passwort als POST-Daten senden und mir wird ein Token zurückgegeben. Alles funktioniert wie erwartet. Jetzt, wenn ich versuche und dasselbe von PHP mache, bekomme ich ein GuzzleHttp\Psr7\Response
Objekt zurück, aber ich kann nicht scheinen, das Token irgendwo innerhalb davon zu finden, wie ich mit der Postman-Anfrage getan habe.Guzzehtttp - Wie bekommen Sie den Körper einer Antwort von Guzzle 6?
Der entsprechende Code wie folgt aussieht:
$client = new Client(['base_uri' => 'http://companysub.dev.myapi.com/']);
$response = $client->post('api/v1/auth/', [
'form_params' => [
'username' => $user,
'password' => $password
]
]);
var_dump($response); //or $resonse->getBody(), etc...
Die Ausgabe des obigen Code sieht ungefähr so aus (Warnung, eingehende Wand Text):
object(guzzlehttp\psr7\response)#36 (6) {
["reasonphrase":"guzzlehttp\psr7\response":private]=>
string(2) "ok"
["statuscode":"guzzlehttp\psr7\response":private]=>
int(200)
["headers":"guzzlehttp\psr7\response":private]=>
array(9) {
["connection"]=>
array(1) {
[0]=>
string(10) "keep-alive"
}
["server"]=>
array(1) {
[0]=>
string(15) "gunicorn/19.3.0"
}
["date"]=>
array(1) {
[0]=>
string(29) "sat, 30 may 2015 17:22:41 gmt"
}
["transfer-encoding"]=>
array(1) {
[0]=>
string(7) "chunked"
}
["content-type"]=>
array(1) {
[0]=>
string(16) "application/json"
}
["allow"]=>
array(1) {
[0]=>
string(13) "post, options"
}
["x-frame-options"]=>
array(1) {
[0]=>
string(10) "sameorigin"
}
["vary"]=>
array(1) {
[0]=>
string(12) "cookie, host"
}
["via"]=>
array(1) {
[0]=>
string(9) "1.1 vegur"
}
}
["headerlines":"guzzlehttp\psr7\response":private]=>
array(9) {
["connection"]=>
array(1) {
[0]=>
string(10) "keep-alive"
}
["server"]=>
array(1) {
[0]=>
string(15) "gunicorn/19.3.0"
}
["date"]=>
array(1) {
[0]=>
string(29) "sat, 30 may 2015 17:22:41 gmt"
}
["transfer-encoding"]=>
array(1) {
[0]=>
string(7) "chunked"
}
["content-type"]=>
array(1) {
[0]=>
string(16) "application/json"
}
["allow"]=>
array(1) {
[0]=>
string(13) "post, options"
}
["x-frame-options"]=>
array(1) {
[0]=>
string(10) "sameorigin"
}
["vary"]=>
array(1) {
[0]=>
string(12) "cookie, host"
}
["via"]=>
array(1) {
[0]=>
string(9) "1.1 vegur"
}
}
["protocol":"guzzlehttp\psr7\response":private]=>
string(3) "1.1"
["stream":"guzzlehttp\psr7\response":private]=>
object(guzzlehttp\psr7\stream)#27 (7) {
["stream":"guzzlehttp\psr7\stream":private]=>
resource(40) of type (stream)
["size":"guzzlehttp\psr7\stream":private]=>
null
["seekable":"guzzlehttp\psr7\stream":private]=>
bool(true)
["readable":"guzzlehttp\psr7\stream":private]=>
bool(true)
["writable":"guzzlehttp\psr7\stream":private]=>
bool(true)
["uri":"guzzlehttp\psr7\stream":private]=>
string(10) "php://temp"
["custommetadata":"guzzlehttp\psr7\stream":private]=>
array(0) {
}
}
}
Die Ausgabe von Postman war so etwas wie:
{
"data" : {
"token" "fasdfasf-asfasdfasdf-sfasfasf"
}
}
Offensichtlich fehlt mir etwas über die Arbeit mit den Antwortobjekten in Gu zzle. Die Guzzle-Antwort gibt einen 200-Statuscode für die Anforderung an. Daher bin ich nicht sicher, was genau ich tun muss, um die zurückgegebenen Daten abzurufen.
'$ response-> getBody() -> getContents()' funktioniert nicht? – Federkun
Sie schönes Genie @ Leggendario. Du bist eine Legende in deiner eigenen Zeit. Ich weiß nicht, wie ich 'getContents()' vorher gefunden habe. – Greg