Czy ktoś wie, jak prawidłowo post
używać JSON Guzzle
?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Otrzymuję internal server error
odpowiedź z serwera. Działa przy użyciu przeglądarki Chrome Postman
.
'json' => $data
: stackoverflow.com/a/44154428/842768Odpowiedzi:
W przypadku Guzzle 5, 6 i 7 robisz to tak:
Dokumenty
źródło
RequestOptions
stałych dla kluczy tablicy opcji (GuzzleHttp\RequestOptions::JSON
w tym przypadku) - ułatwia to wykrycie literówek, ponieważ nagle stają się powiadomieniami, a nie tylko cichymi błędami czekającymi na kłopoty.jsson
na przykład) nie spowoduje żadnego błędu, a znalezienie literówki może zająć trochę czasu.Dla Guzzle <= 4 :
Jest to surowe żądanie posta, więc umieszczenie JSON w treści rozwiązało problem
źródło
$client->post($url, ['body' => $string, 'headers' => ['Content-type' => 'application/json']]);
'json' => $data
: stackoverflow.com/a/44154428/842768Prosty i podstawowy sposób (guzzle6):
Aby uzyskać kod stanu odpowiedzi i zawartość treści, zrobiłem to:
źródło
To zadziałało dla mnie (używając Guzzle 6)
źródło
źródło
['json' => $body]
jest lepszy sposób, o czym wspomina odpowiedź Michaela.$res->json();
działa tylko w Guzzle 5.3. Został usunięty w wersji 6.json_decode()
zamiast tego.źródło
To działa dla mnie z Guzzle 6.2:
Zgodnie z dokumentacją guzzle wykonaj plik json_encode
źródło
Zobacz Dokumenty .
źródło
Wersja php: 5.6.0
Wersja Symfony: 2.3
Guzzle: 5.0
Niedawno miałem doświadczenie z wysyłaniem jsonów za pomocą Guzzle. Używam Symfony 2.3, więc moja wersja guzzle może być trochę starsza.
Pokażę również, jak korzystać z trybu debugowania i możesz zobaczyć żądanie przed wysłaniem,
Kiedy złożyłem żądanie, jak pokazano poniżej, otrzymałem pomyślną odpowiedź;
źródło
Odpowiedź od użytkownika @ user3379466 może działać, ustawiając
$data
w następujący sposób:Nasz projekt wymagał wstawienia zmiennej do tablicy wewnątrz łańcucha json, co zrobiłem w następujący sposób (na wypadek, gdyby to komuś pomogło):
Tak więc
$existing_variable
będąc, powiedzmy, 90210, otrzymujesz:Warto również zauważyć, że możesz również chcieć ustawić
'Accept' => 'application/json'
również na wypadek, gdyby punkt końcowy, w który trafiłeś, dba o tego typu rzeczy.źródło
$data
json_encode
$data = json_encode(array('collection' => $existing_variable));
@ user3379466 jest poprawne, ale tutaj przepisuję w całości:
--- Rozwiązanie dla * Guzzle 6 * --- - pakiet, którego potrzebujesz:
źródło
Powyższe odpowiedzi jakoś mi nie pomogły. Ale to działa dobrze dla mnie.
źródło
Po prostu użyj tego, to zadziała
źródło