Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mendapatkan Nilai POST dengan Jenis Kandungan `application/json` dalam PHP?

Bagaimana untuk Mendapatkan Nilai POST dengan Jenis Kandungan `application/json` dalam PHP?

Linda Hamilton
Lepaskan: 2024-12-23 15:53:15
asal
455 orang telah melayarinya

How to Retrieve POST Values with `application/json` Content Type in PHP?

Membaca JSON POST Menggunakan PHP

Dalam pertanyaan ini, pengguna menghadapi kesukaran untuk mengekstrak nilai POST dan mengembalikan tatasusunan berkod JSON daripada perkhidmatan web selepas beralih kepada menggunakan jenis kandungan berasaskan JSON. Soalan berikut timbul:

Soalan:

Apakah kaedah yang sesuai untuk mendapatkan semula nilai POST apabila jenis kandungan ialah aplikasi/json?

Jawapan:

superglobal PHP tradisional seperti $_POST tidak akan mengandungi data yang dikehendaki apabila jenis kandungan adalah application/json. Untuk mengakses data POST mentah, anda perlu membaca daripada sumber yang berbeza.

Penyelesaian:

Gunakan fungsi file_get_contents() PHP untuk mendapatkan semula input POST mentah dan kemudian menghuraikannya menggunakan json_decode(). Pendekatan ini membolehkan mengakses data dalam tatasusunan bersekutu.

Pertimbangan Tambahan:

Kod ujian pengguna juga memerlukan pengubahsuaian. CURLOPT_POSTFIELDS harus digunakan untuk menetapkan badan permintaan sebagai rentetan JSON, dan bukannya cuba mengekodnya sebagai application/x-www-form-urlencoded.

Kod PHP yang dikemas kini untuk Pengujian:

$data_string = json_encode($data);

$curl = curl_init('http://webservice.local/');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($curl);
$result = json_decode($result);
var_dump($result);
Salin selepas log masuk

Kod PHP yang dikemas kini untuk Web Perkhidmatan:

header('Content-type: application/json');

// Remove duplicate line
// header('Content-type: application/json');

// Remaining code...
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai POST dengan Jenis Kandungan `application/json` dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan