belajar menggunakan cURL (libcurl) pada php

Assalamu'laykum, kali ini kita akan belajar menggunakan cURL pada php. Bagi yang belum tahu, sebelum melangkah, sebaiknya terlebih dahulu kita selidiki secara singkat apakah sesungguhnya cURL itu.

cURL merupakan sebuah tools berbasis command line yang dihasilkan oleh cURL Project yang digunakan untuk melakukan url transfer melalui berbagai protokol, seperti HTTP, FTP dsb.

Sampai saat ini proyek tersebut masih aktif. Ada dua produk yang dihasilkan dari proyek ini, yaitu cURL dan libcurl. cURL merupakan tools berbasis command line sementara libcurl merupakan library yang digunakan oleh cURL. Keduanya ditulis menggunakan bahasa C. libcurl memiliki binding pada banyak bahasa pemrograman sehingga kita bisa memakainya dengan mudah pada bahasa yang kita gunakan, beberapa diantaranya adalah C/C++, php, python dan kawan-kawan.

Kita cukupkan saja intro mengenai cURL dan libcurl. Selanjutnya mari kita langsung bermain dengan script, melakukan HTTP request menggunakan libcurl pada php. <?php

$url = 'http://example.com';

$fields = [
    'nama' => 'Joko',
    'alamat' => 'Jalan Jenderal Soedirman 78, Purwokerto'
];

$agent = 'bukanChromeBukanFirefox';

$timeout = 20; //detik

$handle = curl_init();
curl_setopt($handle,CURLOPT_URL, $url);

//jika ingin menggunakan request bermethod POST
curl_setopt($handle,CURLOPT_POST, 1);
curl_setopt($handle,CURLOPT_POSTFIELDS, http_build_query($fields));
//end POST

curl_setopt($handle,CURLOPT_USERAGENT, $agent);
curl_setopt($handle,CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($handle);
$httpcode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);

echo $data; //berisi respon dari server

?>

mari kita urai satu demi satu.

$handle = curl_init();

Memulai sebuah sesi cURL.


curl_setopt($handle,CURLOPT_URL, $url);  

Mengatur URL tujuan request yang akan dibuat.


curl_setopt($handle,CURLOPT_POST, 1);

Memberitahu libcurl bahwa request yang akan dibuat adalah POST request.


curl_setopt($handle,CURLOPT_POSTFIELDS, http_build_query($fields));

Memberitahu libcurl tentang muatan data yang akan dikirim melalui POST request.
Penggunaan fungsi http_build_query() mengubah array pada $fields menjadi string dalam bentuk urlencoded.
Jika data yang dimuat berupa string berbentuk encodedurl maka request yang akan dibuat akan memiliki Content-type: application/x-www-form-urlencoded pada headernya seperti pada form kebanyakan.
Namun jika data berbentuk array, maka request akan memiliki Content-type: multipart/form-data pada headernya layaknya form yang digunakan untuk mengupload file.


curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);

Mengatur agar method curl_exec() mengembalikan mengembalikan nilai berupa string respon dari server tujuan.
Jika opsi ini tidak ditulis atau bernilai selain 1 maka hasil / respon dari server tujuan akan langsung ter echo dan kita akan kesusahan untuk mengolahnya.


$data = curl_exec($handle);

Mengeksekusi request cURL dan memasukan respon kembalian kedalam variabel $data


dan yang terakhir adalah jangan lupa untuk selalu membebaskan resource yang kita pakai jika sudah selesai digunakan.

curl_close($handle);

Sekian, semoga bermanfaat.

Referensi:

  1. Wikipedia
  2. PHP Doc


Manusia tidak luput dari kesalahan, begitu pula saya. Jika terdapat kesalahan dalam tulisan, sudilah untuk menghubungi saya, kritik dan saran akan saya terima dengan baik. Hubungi Saya