CURL là bộ thư viện được sử dụng để giúp thực hiện việc chuyển dữ liệu qua nhiều giao thức khác nhau (như HTTP, FPT. ). Với giao thức HTTP, cURL hỗ trợ việc gửi dữ liệu sử dụng tất cả các phương thức hiện có như GET, POST, PUT, DELETE. cURL cũng hỗ trợ tạp chí dữ liệu sử dụng giao thức HTTPS. Ngoài ra, chúng ta cũng có thể thực hiện công việc xác thực yêu cầu gửi thông tin qua cURL. Xác nhận thực tế có thể được thực hiện thông qua tiêu đề thiết lập cho yêu cầu hoặc sử dụng cookie Nội dung chính Hiển thị - Giới Thiệu
- Ví dụ sử dụng CURL trong PHP
- Ví dụ sau sử dụng CURL gọi theo phương thức GET lấy dữ liệu JSON thời tiết hiện tại của Hà Nội, Việt Nam từ dịch vụ thời gian của YAHOO
- Ví dụ sử dụng CURL POST
- Use CURL post data JSON
- Tham khảo
Trong bài viết này chúng ta sẽ tìm hiểu cURL được sử dụng trong ngôn ngữ PHP như thế nào Lưu ý. Nếu bạn sử dụng Linux thì sau khi đọc bài viết này, bạn có thể tham khảo thêm bài viết sử dụng curl trên cửa sổ dòng lệnh để biết cách sử dụng lệnh curl trên terminal của Linux Ví dụ sử dụng CURL trong PHPMột ứng dụng CURL thường có 3 bước cơ bản Bước 1. Khởi tạo CURL Bước 2. Config number for CURL Bước 3. Thực thi CURL Bước 4. Tắt CURL, giải nén dữ liệu // Tạo mới một CURL
$ch = curl_init();
// Cấu hình cho CURL
curl_setopt($ch, CURLOPT_URL, "https://viblo.asia/");
// Thực thi CURL
curl_exec($ch);
// Ngắt CURL, giải phóng
curl_close($ch);
Trong phần cấu hình, chúng ta đặc biệt chú ý đến lệnh curl_setopt(1,2,3); Đây là một hàm quan trọng trong CURL để xử lý dữ liệu vào Curl_setopt(1,2,3) has 3 tham số đầu vào 1 as object CURL 2 is configuration name 3 is value Một số cấu hình tên thông số ứng dụng với CURL CURLOPT_URL. path to URL to handle CURLOPT_RETURNTRANSFER. nếu đúng thì sẽ trả kết quả về hàm curl_exec nên ta phải lặp lại kết quả đó mới trong trình duyệt, nếu sai thì thực thi nó là kết quả của nó trong trình duyệt luôn CURLOPT_USERAGENT. Dùng để giả lập đang gửi ở bất kỳ trình duyệt nào (tác nhân người dùng) CURLOPT_TIMEOUT. CURL setting setting time of a request CURL CURLOPT_FILE. Lưu kết quả vào tệp CURLOPT_POSTFIELDS. giá trị của nó chính là một mảng các key => value, tương ứng với tên và giá trị của nó trong các thẻ đầu vào khi gửi BIỂU MẪU …. Ngoài ra còn có rất nhiều Tùy chọn với các giá trị khác nữa đối với hàm CURL_setopt mà trong bài viết này không thể liệt kê hết được. Nếu các bạn thực sự quan tâm có thể vào trang chủ của php để tìm hiểu thêm. http. //php. net/thủ công/vi/chức năng. curl-setopt. php
Ví dụ sau sử dụng CURL gọi theo phương thức GET lấy dữ liệu JSON thời tiết hiện tại của Hà Nội, Việt Nam từ dịch vụ thời gian của YAHOO<?//-----------------------------------------------------------------------------------
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 0,
CURLOPT_URL => 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22hanoi%2C%20vietnam%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys',
CURLOPT_USERAGENT => 'Viblo test cURL Request',
CURLOPT_SSL_VERIFYPEER => false
));
$resp = curl_exec($curl);
//Dữ liệu thời tiết ở dạng JSON
$weather = json_decode($resp);
var_dump($weather);
curl_close($curl);
Ví dụ sử dụng CURL POSTVí dụ sau khi sử dụng dịch vụ chạy thử REST tại địa chỉ https. // yêu cầu. in/api/register to try POST đăng nhập hệ thống. Đăng nhập thông tin bao gồm email và mật khẩu. You running try, test instead of both other email //-----------------------------------------------------------------------------------
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'https://reqres.in/api/register',
CURLOPT_USERAGENT => 'Viblo Exmaple POST',
CURLOPT_POST => 1,
CURLOPT_SSL_VERIFYPEER => false, //Bỏ kiểm SSL
CURLOPT_POSTFIELDS => http_build_query(array(
'email' => '[email protected]',
'password' => 'pistol'
))
));
$resp = curl_exec($curl);
var_dump($resp);
curl_close($curl);
//-----------------------------------------------------------------------------------
?>
Use CURL post data JSONRất nhiều dịch vụ Webservice ví dụ của Google, Facebook. sử dụng REST post JSON để làm việc, chứ không hẳn là kiểu POST như FORM HTML post up, trong trường hợp này thực hiện các bước - Mảng dữ liệu POST phải chuyển thành chuỗi json với hàm json_encode
- Thiết lập thêm CURLOPT_HTTPHEADER với kiểu ứng dụng/json
- Thiết lập thêm CURLOPT_CUSTOMREQUEST là POST, PUT. tùy thuộc vào dịch vụ
Ví dụ $data = array("name" => "Hagrid", "age" => "36");
$data_string = json_encode($data);
$curl = curl_init('http://example.api.com');
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))
);
$result = curl_exec($curl);
curl_close($curl);
Với ba đoạn trên, bạn có thể lấy dữ liệu từ trang web khác được đưa vào trang đích một cách đơn giản. Ngoài ra, bạn có thể sử dụng một số hàm sau cho mục đích nâng cao hơn. set a user-agent option (trình duyệt tên giả một cách ngẫu nhiên-“ngẫu nhiên”) function getRandomUserAgent()
{
$userAgents=array(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
"Opera/9.20 (Windows NT 6.0; U; en)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50",
"Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48"
);
$random = rand(0,count($userAgents)-1);
return $userAgents[$random];
}
Sau đó, bạn có thể sử dụng tùy chọn CURLOPT_USERAGENT để đặt trình duyệt giả curl_setopt($ch,CURLOPT_USERAGENT,getRandomUserAgent());
Để xử lý URL điều hướng, ta có thể sử dụng Tùy chọn CURLOPT_FOLLOWLOCATION với Giá trị là TRUE. Số lượng lớn nhất của các chuyển hướng được điều khiển bằng Tùy chọn CURLOPT_MAXREDIRS |