Adakah yang tahu cara yang benar untuk post
menggunakan JSON Guzzle
?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Saya mendapat internal server error
respons dari server. Ini bekerja menggunakan Chrome Postman
.
'json' => $data
: stackoverflow.com/a/44154428/842768Jawaban:
Untuk Guzzle 5 & 6 Anda melakukannya seperti ini:
Documents
sumber
RequestOptions
konstanta untuk tombol array opsi (GuzzleHttp\RequestOptions::JSON
dalam kasus ini) - ini membuat kesalahan ketik lebih mudah untuk dideteksi karena mereka tiba-tiba menjadi pemberitahuan daripada hanya bug diam yang menunggu untuk menyebabkan masalah.jsson
misalnya) tidak akan memunculkan kesalahan, dan Anda mungkin perlu waktu untuk menemukan kesalahan ketik.Untuk Guzzle <= 4 :
Ini permintaan posting mentah sehingga menempatkan JSON di dalam tubuh menyelesaikan masalah
sumber
$client->post($url, ['body' => $string, 'headers' => ['Content-type' => 'application/json']]);
'json' => $data
: stackoverflow.com/a/44154428/842768Cara sederhana dan dasar (guzzle6):
Untuk mendapatkan kode status respons dan konten isi, saya melakukan ini:
sumber
Ini bekerja untuk saya (menggunakan Guzzle 6)
sumber
sumber
['json' => $body]
ini cara yang lebih baik di sini, seperti yang disebutkan oleh jawaban Michael.$res->json();
hanya berfungsi di Guzzle 5.3. Sudah dihapus di v6.json_decode()
sebagai gantinya.sumber
Ini bekerja untuk saya dengan Guzzle 6.2:
Menurut pedoman dokumentasi lakukan json_encode
sumber
Lihat Documents .
sumber
Versi Php: 5.6
Versi symfony: 2.3
Petunjuk: 5.0
Saya punya pengalaman baru-baru ini tentang mengirim json dengan Guzzle. Saya menggunakan Symfony 2.3 sehingga versi guzzle saya bisa sedikit lebih tua.
Saya juga akan menunjukkan cara menggunakan mode debug dan Anda dapat melihat permintaan sebelum mengirimnya,
Ketika saya membuat permintaan seperti yang ditunjukkan di bawah ini mendapat respons berhasil;
sumber
Jawaban dari @ user3379466 dapat dibuat berfungsi dengan menetapkan
$data
sebagai berikut:Apa yang dibutuhkan proyek kami adalah memasukkan variabel ke dalam array di dalam string json, yang saya lakukan sebagai berikut (dalam kasus ini membantu siapa saja):
Jadi dengan
$existing_variable
menjadi, katakanlah, 90210, Anda mendapatkan:Juga perlu dicatat adalah bahwa Anda mungkin ingin juga mengatur
'Accept' => 'application/json'
juga jika titik akhir Anda memukul peduli tentang hal semacam itu.sumber
$data
dengan menggunakanjson_encode
:$data = json_encode(array('collection' => $existing_variable));
@ user3379466 benar, tetapi di sini saya menulis ulang secara penuh:
--- Solusi untuk * Guzzle 6 * --- -paket yang Anda butuhkan:
sumber
Jawaban di atas tidak berhasil bagi saya. Tetapi ini bekerja dengan baik untuk saya.
sumber
Cukup gunakan ini akan berhasil
sumber