Dalam pembangunan web, menghantar permintaan HTTP adalah tugas yang sangat penting. Sama ada anda mendapat data melalui API atau berkomunikasi dengan perkhidmatan pihak ketiga, anda perlu menggunakan permintaan HTTP untuk pemindahan data. Dalam PHP, anda boleh menggunakan perpustakaan curl untuk menghantar permintaan HTTP Artikel ini akan memperkenalkan penggunaan perpustakaan curl secara terperinci.
1. Pengenalan kepada perpustakaan curl
Pustaka curl ialah perpustakaan untuk pemindahan fail dan menyokong berbilang protokol. Selain menyokong protokol biasa seperti HTTP, HTTPS dan FTP, ia juga menyokong protokol e-mel seperti SMTP dan POP3, dan protokol pemindahan fail seperti SCP dan SFTP. Pustaka curl ialah alat yang sangat berkuasa yang boleh membantu kami membangunkan klien HTTP dengan cepat untuk merealisasikan interaksi data dengan perkhidmatan pihak ketiga.
2. Penggunaan asas perpustakaan curl
Pustaka curl menyediakan banyak fungsi Di sini kami hanya memperkenalkan beberapa fungsi yang biasa digunakan.
Menghantar permintaan GET menggunakan perpustakaan curl adalah sangat mudah Anda hanya perlu memanggil curl_init() untuk mencipta sumber curl, dan kemudian tetapkan URL dan parameter lain. Berikut ialah contoh:
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Kod di atas menggunakan fungsi curl_init() untuk mencipta sumber curl dan menetapkan URL yang diminta. Kemudian fungsi curl_setopt() digunakan untuk menetapkan parameter CURLOPT_RETURNTRANSFER, yang menunjukkan bahawa respons HTTP dikeluarkan terus kepada pembolehubah dan bukannya dipaparkan pada skrin. Akhir sekali, fungsi curl_exec() dipanggil dan hasilnya disimpan Selepas pelaksanaan, curl_close() digunakan untuk menutup sumber curl.
Selain permintaan GET, ia juga sangat mudah untuk menggunakan perpustakaan curl untuk menghantar permintaan POST. Hanya tetapkan parameter CURLOPT_POST kepada 1 apabila memanggil fungsi curl_setopt() dan gunakan curl_setopt() untuk menetapkan CURLOPT_POSTFIELDS untuk menetapkan data POST.
Berikut ialah contoh:
$url = 'http://example.com/api/postdata'; $data = array( 'name' => 'John', 'email' => 'john@example.com', 'message' => 'Hello World!' ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Kod di atas menggunakan fungsi http_build_query() untuk menukar data POST kepada data berkod URL dan menetapkan parameter CURLOPT_POST dan CURLOPT_POSTFIELDS.
Dalam aplikasi sebenar, kadangkala kami perlu menghantar data dalam format JSON ke pelayan, yang boleh dicapai dengan mudah menggunakan perpustakaan curl. Hanya tetapkan parameter CURLOPT_HTTPHEADER untuk menentukan maklumat pengepala permintaan dan hantar data JSON sebagai badan permintaan.
Berikut ialah contoh:
$url = 'http://example.com/api/sendjson'; $data = array( 'name' => 'John', 'email' => 'john@example.com', 'message' => 'Hello World!' ); $json = json_encode($data); $curl = curl_init($url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $json); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($json)) ); $result = curl_exec($curl); curl_close($curl);
Kod di atas memanggil fungsi json_encode() untuk menukar tatasusunan bersekutu kepada data format JSON dan menetapkan pengepala permintaan seperti Content-Type dan Content- Maklumat panjang.
3. Penggunaan lanjutan perpustakaan curl
Pustaka curl bukan sahaja menyediakan fungsi asas untuk menghantar permintaan HTTP, tetapi juga menyediakan banyak fungsi lanjutan yang boleh membantu kami mengawal proses permintaan dengan lebih baik. Berikut adalah beberapa fungsi lanjutan yang biasa digunakan.
Kadangkala, kita perlu mengakses sumber rangkaian melalui pelayan proksi. Ia juga mudah untuk menyediakan pelayan proksi menggunakan perpustakaan curl. Hanya tetapkan parameter CURLOPT_PROXY.
Berikut ialah contoh:
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_PROXY, 'http://proxy.example.com:8080'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Kod di atas memanggil fungsi curl_setopt() untuk menetapkan parameter CURLOPT_PROXY dan menentukan alamat dan port pelayan proksi.
Kadangkala, permintaan rangkaian boleh menyebabkan atur cara berjalan terlalu lama disebabkan oleh kelewatan rangkaian atau masa respons pelayan yang lama. Untuk mengelakkan ini, kita boleh menetapkan tamat masa. Tamat masa boleh ditetapkan dengan mudah menggunakan perpustakaan curl, cuma tetapkan parameter CURLOPT_CONNECTTIMEOUT dan CURLOPT_TIMEOUT.
Berikut ialah contoh:
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Kod di atas menetapkan parameter CURLOPT_CONNECTTIMEOUT dan CURLOPT_TIMEOUT, yang masing-masing mewakili tamat masa sambungan dan masa tamat permintaan.
Apabila berkomunikasi dengan pelayan protokol HTTPS, kami perlu mengesahkan pelayan, jika tidak, komunikasi tidak akan diwujudkan. Pengesahan SSL boleh menjadi sangat mudah menggunakan perpustakaan curl Anda hanya perlu menetapkan parameter CURLOPT_SSL_VERIFYPEER dan CURLOPT_SSL_VERIFYHOST.
Berikut ialah contoh:
$url = 'https://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Kod di atas menetapkan parameter CURLOPT_SSL_VERIFYPEER dan CURLOPT_SSL_VERIFYHOST, yang masing-masing menunjukkan sama ada untuk mengesahkan pelayan dan mengesahkan sama ada nama hos sepadan dengan sijil.
4. Ringkasan
Artikel ini memperkenalkan penggunaan asas dan lanjutan menggunakan perpustakaan curl untuk menghantar permintaan HTTP dalam PHP, termasuk menghantar permintaan GET, permintaan POST, data JSON, proksi tetapan dan tetapan tamat masa dan sediakan pengesahan SSL, dsb. Menggunakan perpustakaan curl boleh membantu kami melaksanakan klien HTTP dengan lebih mudah, dengan itu merealisasikan fungsi interaksi data dengan perkhidmatan pihak ketiga.
Atas ialah kandungan terperinci PHP menggunakan perpustakaan curl untuk menghantar permintaan HTTP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!