Mendapatkan Pengepala Respons dan Badan dalam Permintaan cURL PHP Tunggal
Pustaka cURL PHP menyediakan keupayaan untuk melaksanakan permintaan HTTP, menjadikannya serba boleh untuk pengambilan data dan tugas komunikasi. Walau bagaimanapun, cabaran biasa yang dihadapi apabila menggunakan cURL ialah keperluan untuk mendapatkan kedua-dua pengepala respons dan kandungan dalam satu permintaan.
Secara lalai, menetapkan CURLOPT_HEADER kepada benar mengembalikan kedua-dua pengepala dan badan digabungkan dalam respons, yang memerlukan lebih lanjut menghurai untuk mengekstrak komponen individu. Untuk pendekatan yang lebih cekap dan selamat, kaedah alternatif boleh digunakan:
$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); // Execute the request $response = curl_exec($ch); // Extract header and body $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $body = substr($response, $header_size);
Kaedah ini memisahkan pengepala daripada badan menggunakan maklumat CURLINFO_HEADER_SIZE. Ambil perhatian bahawa pendekatan ini mungkin mempunyai had apabila berurusan dengan pelayan proksi atau jenis ubah hala tertentu. Pertimbangkan untuk menggunakan penyelesaian berikut untuk meningkatkan kebolehpercayaan dalam kes sedemikian:
function get_headers_body($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); // Execute the request and get headers only $headers = curl_exec($ch); // Close the original handle curl_close($ch); // Set the necessary header information to a new handle $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); foreach (explode("\n", $headers) as $header) { // Remove set-cookie headers if (stripos($header, 'set-cookie') !== false) { continue; } // Add it to the request curl_setopt($ch, CURLOPT_HTTPHEADER, array($header)); } // Execute the request and get the body only $body = curl_exec($ch); // Close the handle curl_close($ch); return array( 'headers' => $headers, 'body' => $body ); }
Penyelesaian ini memberikan kawalan yang lebih besar ke atas proses mendapatkan pengepala, memastikan hasil yang lebih dipercayai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kedua-dua Pengepala Respons dan Badan dengan Cekap dalam Permintaan cURL PHP Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!