Bersusah payah membaca data JSON dalam perkhidmatan web PHP?
< h3>The Masalah
Anda mempunyai perkhidmatan web yang berfungsi dengan sempurna dengan data borang ringkas. Walau bagaimanapun, apabila anda perlu menghantar data POST dengan jenis kandungan aplikasi/json, perkhidmatan web anda gagal mengembalikan sebarang nilai. Anda mengesyaki ia berkaitan dengan cara anda mengendalikan nilai POST.
Isunya terletak pada cara anda mengakses data POST. Untuk permintaan JSON POST, anda perlu menggunakan kaedah yang berbeza daripada pembolehubah $_POST standard.
Untuk membaca data JSON daripada POST minta, gunakan kod berikut:
$inputJSON = file_get_contents('php://input'); $input = json_decode($inputJSON, TRUE); // Convert JSON into an array // Use the $input array to access your JSON data
Dalam permintaan CURL anda, anda menggunakan CURLOPT_POSTFIELDS untuk mengekod parameter anda sebagai application/x-www-form-urlencoded. Walau bagaimanapun, untuk permintaan JSON POST, anda perlu menyediakan data berformat JSON.
Tukar kod CURL anda kepada yang berikut:
$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) ));
Pastikan hanya ada satu panggilan ke pengepala('Content-type: aplikasi/json'); dalam halaman perkhidmatan web anda. Jika terdapat berbilang panggilan, ia boleh mengganggu respons JSON.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Data JSON POST dalam Perkhidmatan Web PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!