Saya mungkin jauh dari dasar, tapi saya sudah mencoba sepanjang sore untuk menjalankan perintah curl post dalam tutorial kerangka PHP reses ini. Apa yang saya tidak mengerti adalah bagaimana PHP seharusnya menafsirkan POST saya, itu selalu muncul sebagai array kosong.
curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
(Garis miring di sana hanya untuk membuat saya tidak terlihat seperti orang bodoh, tetapi saya mengeksekusi ini dari windows menggunakan PHP 5.2, juga mencoba di server Linux, versi yang sama dengan Linux curl)
Pasti ada sesuatu yang saya lewatkan karena tampaknya cukup mudah, postingan tidak diartikan dengan benar, jika ya, semuanya akan berfungsi dengan baik.
Inilah yang saya dapatkan kembali:
Konflik HTTP / 1.1 409 Tanggal: Jum, 01 Mei 2009 22:03:00 GMT Server: Apache / 2.2.8 (Win32) PHP / 5.2.6 X-Powered-By: PHP / 5.2.6 Transfer-Encoding: dipotong Jenis Konten: teks / html; charset = iso-8859-1 {"screencast": {"id": null, "subject": null, "body": null, "dataUrl": null, "dataMedium": null, "createOn": null, "author": null}}
application/json
.Jawaban:
Analisis Jordans mengapa array $ _POST tidak diisi sudah benar. Namun, Anda bisa menggunakan
untuk hanya mengambil isi http dan menanganinya sendiri. Lihat aliran input / output PHP .
Dari perspektif protokol, ini sebenarnya lebih tepat, karena Anda tidak benar-benar memproses data formulir multipart http. Selain itu, gunakan application / json sebagai tipe konten saat memposting permintaan Anda.
sumber
Biasanya parameter
-d
diinterpretasikan sebagai form-encoded. Anda membutuhkan-H
parameter:sumber
Saya yakin Anda mendapatkan array kosong karena PHP mengharapkan data yang diposting dalam format Querystring (key = value & key1 = value1).
Coba ubah permintaan curl Anda menjadi:
dan lihat apakah itu membantu.
sumber
-H "Content-Type: application/json"
itu tidak berhasil untuk saya.Anda perlu menyetel beberapa tanda tambahan agar curl mengirimkan data sebagai JSON.
perintah
bendera
-H
: header kustom, argumen berikutnya diharapkan menjadi header-X
: kata kerja HTTP khusus, argumen berikutnya diharapkan menjadi kata kerja-d
: mengirimkan argumen berikutnya sebagai data dalam permintaan HTTP POSTsumber daya
sumber
Anda harus menghindari kutipan seperti ini:
sumber