cURL là gì?
cURL là một command line tool và thư viện được sử dụng để truyền tài liệu thông qua nhiều giao thức khác nhau (như HTTP, HTTPS, FTP, FTPS, SCP, SFTP, FILE, IMAP, SMTP, POP3, RTSP và RTMP…). Được đời từ thời điểm năm 1997 viết bởi Daniel Stenberg viết bằng C. Với giao thức HTTP, cURL tương trợ việc gửi đi một request với tất cả những phương thức hiện có như GET, POST, PUT, DELETE…
Cơ bản về sử dụng cURL PHP
Với giao thức HTTP, cURL tương trợ việc gửi đi một request với tất cả những phương thức hiện có như GET, POST, PUT, DELETE…Trong PHP có cung cấp các API để thao tác với thư viện này với những chức năng khá đầy đủ cURL PHP.
cURL có tương trợ việc truyền tài liệu qua giao thức HTTPS. Ta có thể dùng cURL trong Php để GET và POST tài liệu, truy cập REST API service có kết phù hợp với JSON hoặc xác thực OAUTH.
Khi sử dụng cURL thường có 3 bước cơ bản:
- Khởi tạo cURL
- Cấu hình thông số cho cURL
- Thực thi cURL
- Ngắt cURL, phóng thích tài liệu
$ch = curl_init(); //khai báo curl curl_setopt($ch, CURLOPT_URL,”https://topdev.vn”); // xác định địa chỉ có thực thi curl_setopt($ch, CURLOPT_POST, 1); // POST // và các thông số khác … dùng curl_setopt để dịnh giá trị cho từng thông số. curl_exec ($ch); // thực thi curl curl_close ($ch); // đóng curl để phóng thích vùng nhớ ?>
Thiết lập cURL
Chúng ta có thể cấu hình thêm một hoặc nhiều option nữa cho curl bằng curl_setopt. Các curl_setopt này phải được đặt trước curl_exec thì mới có thể có hiệu lực. Đây là một hàm quan trọng trong cURL để xử lí các tài liệu vào:
- CURLOPT_RETURNTRANSFER: TRUE để curl_exec() trả về chuỗi chứ không xuất thẳng ra màn hình hiển thị.
- CURLOPT_CONNECTTIMEOUT: Thời kì được cho phép cURL nỗ lực cố gắng kết nối (giây), 0 vô tận
- CURLOPT_USERAGENT: Nội dung của dòng User-Agent: trong header của HTTP khi gửi yêu cầu
- CURLOPT_URL: URL mà cURL gửi yêu cầu
- CURLOPT_POST: TRUE – Thiết lập yêu cẩu gửi theo phương thức POST
- CURLOPT_POSTFIELDS: Mảng tài liệu để POST
Bạn có thi hành nhiều thiết lập một lúc bằng hàm curl_setopt_array():
//Tài liệu để POST $data = array( ‘name’ = ‘TopDev’, ‘data’ = array(1,2,3,4), ‘value’ = ‘Viec Lam IT’ ); //Có thể phải dùng thêm hàm chuyển thông số mảng thành chuỗi URL encode //$data = http_build_query($data) nếu POST $curl = curl_init(); $options = array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => ‘https://topdev.vn/api/’, CURLOPT_POST => true, CURLOPT_USERAGENT => “Safari/8.0”, CURLOPT_POSTFIELDS => $data ); curl_setopt_array($curl, $options);
Gửi request với cURL
Tạo tài nguyên cURL và thiết lập xong như trên, ta tiến hành gửi request với cURL bằng hàm curl_exec(). Kết quả trả về false hoặc true và giá trị là chuỗi trả về khi CURLOPT_RETURNTRANSFER thiết lập true.
$curl = curl_init(); // code khác $result = curl_exec($curl); if ($result === FALSE) { echo “CCURL Error”; } else { //Succeess!, kết quả trong $result }
$result trả về có thể là JSON, string…
Sau khoản thời gian gửi yêu cầu thành công, nhận hết giá trị trả về bạn cần phải đóng CCURL bằng hàm curl_close($curl);
Ví dụ sử dụng cURL GET tài liệu từ JSON
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 0, CURLOPT_URL => ‘https://topdev.vn/blog/json/v1/’, CURLOPT_USERAGENT => ‘TopDev Test Api’, CURLOPT_SSL_VERIFYPEER => false )); $resp = curl_exec($curl); //Tài liệu ở dạng JSON $data = json_decode($resp); var_dump($data); curl_close($curl);
- Nhận định và đánh giá điểm mạnh và điểm yếu của Php
- 10 PHP Instagram Scripts & Widgets tốt nhất
- Hàm json_encode và json_decode trong PHP
- 10 Frameworks tốt nhất hiện nay cho PHP
- Sử dụng mảng đúng cách trong PHP
- 10 điều bạn cần phải biết về PHP7