PHP cURL là thư viện cho phép máy khách truy cập máy chủ từ xa thông qua URL. Nó gửi các yêu cầu HTTP đến điểm cuối từ một ứng dụng hoặc thành phần khác
Nó cho phép các lượt truy cập liên ứng dụng nhận được phản hồi qua mạng. Cơ chế này rất hữu ích để làm việc với các dịch vụ PHP RESTful, tương tác API, v.v.
Có nhiều trường hợp sử dụng trong đó bài đăng cURL PHP hoàn toàn phù hợp. Ví dụ,
- Trích xuất nội dung từ một trang web
- Chuẩn bị nguồn cấp dữ liệu từ các nguồn bên ngoài
- Các phương thức truy cập trực tiếp của API không có SDK
Ví dụ nhanh này cung cấp mã đơn giản để triển khai bài đăng cURL PHP
ví dụ nhanh
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
2Ngoài ra, chúng ta sẽ xem thêm các ví dụ về trường hợp sử dụng của PHP cURL post request trong các phần sắp tới
Phần 1 – Khái niệm cơ bản về PHP cURL
Sau đây là các bước để thực hiện chu trình phản hồi yêu cầu cURL cơ bản của PHP
- Khởi tạo phiên cURL
- Đặt tùy chọn cURL
- thực hiện yêu cầu
- Đóng phiên
Làm cách nào để định cấu hình PHP cURL?
PHP chứa thư viện libcurl để tạo môi trường làm việc với cURL. Thư viện này sẽ được bật theo mặc định
Nếu không, hãy thực hiện các bước sau để bật mô-đun cURL PHP trong môi trường của bạn
- Mở tệp cấu hình PHP php. ban đầu
- Kiểm tra sự bắt đầu của
1curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
- Bỏ dấu chấm phẩy [;] ở đầu dòng trên
- Khởi động lại máy chủ Apache
Đặt yêu cầu POST cURL PHP – Phương pháp thay thế
Có nhiều cách để gửi thông số bài viết PHP cURL
- định dạng JSON
- Chuỗi truy vấn HTTP
- Định dạng mảng POST
định dạng JSON
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
3Chuỗi truy vấn HTTP
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
4PHP cURL POST định dạng mảng
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
2 có thể có một mảng PHP để truyền tham số cho điểm cuối$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
5Đặt tùy chọn tiêu đề cURL
Để đặt tiêu đề PHP cURL, hằng số CURLOPT_HTTPHEADER được sử dụng. Tiêu đề cURL có thể có thêm thông tin. Các khóa sau đây là một số ví dụ để thêm các tùy chọn tiêu đề PHP cURL
- Mã hóa chấp nhận
- Kiểm soát bộ đệm
- Chủ nhà
- Loại nội dung
- Ngôn ngữ chấp nhận
- Đại lý người dùng
Chương trình này đặt các tùy chọn tiêu đề cURL để đặt loại nội dung. Cũng có các tùy chọn để gửi tiêu đề tùy chỉnh. Đó là gửi các cặp khóa-giá trị không chuẩn. Sử dụng tiền tố X- để gửi các tiêu đề không chuẩn. Thí dụ,
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
6Hằng số CURLOPT_HEADER được đặt với giá trị boolean true. Đó là để cho phép thông tin tiêu đề được đính kèm với phản hồi trả về
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
7Phần 2 – Các trường hợp sử dụng ví dụ
Với một số kiến thức cơ bản, bạn sẽ dễ dàng hiểu được các ví dụ sau. Nó giải quyết một số tình huống sử dụng của bài đăng cURL PHP hoặc nhận các phương thức yêu cầu
Dữ liệu biểu mẫu HTTP POST
PHP cURL cho phép đăng tham số lên máy chủ. Nó sử dụng bất kỳ phương pháp nào mà chúng ta đã thảo luận trước đó để đăng thông số qua cURL
Tập lệnh cURL sau đây cho biết cách đăng một mảng lên một URL điểm cuối.
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
3 và curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
2 sẽ gửi các giá trị qua bài đăng cURL PHP$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
8PHP cURL POST để tải tệp lên
Cũng có thể tải tệp lên máy chủ thông qua bài đăng PHP cURL. Đoạn mã dưới đây cho biết cách tải tệp hình ảnh lên máy chủ
Nó chuẩn bị đối tượng với dữ liệu tệp. Nó sử dụng hàm PHP curl_file_create[] để chuẩn bị nội dung bài đăng tệp
Bằng cách gửi gói ‘fileParam’ theo cách này, mã điểm cuối có thể truy cập nó qua mảng $_FILES[]
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
9Đặt mã điểm cuối sau vào máy chủ. Sau đó nhấn điểm cuối thông qua tập lệnh cURL ở trên. Yêu cầu bài đăng cuộn tròn PHP gửi đầu vào tệp đến điểm cuối này. Mã PHP này truy cập tệp đã tải lên từ mảng $_FILES
php-curl-post-file-endpoint. php
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
20Yêu cầu HTTP GET để lấy một trang web
Trong yêu cầu cURL, phương thức mặc định là GET. Chương trình này gọi máy chủ qua cURL với phương thức yêu cầu GET mặc định
Không giống như PHP cURL POST, nó gửi dữ liệu dưới dạng chuỗi truy vấn. Để truyền tham số cho yêu cầu GET, nó phải được xây dựng như một phần của URL
Nó lấy HTML của trang web được chỉ định làm điểm cuối cURL. Nó in phản hồi và hiển thị HTML của trang web mục tiêu trong trình duyệt
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
21Lấy HTML của trang web qua cURL và ghi vào một tệp
Thay vì in bố cục trang web lên trình duyệt, nó cũng có thể được ghi vào một tệp
Mã này tạo một xử lý tệp và ghi phản hồi HTML cURL vào một tệp. Nó sử dụng xử lý tệp làm tài liệu tham khảo
Nó sẽ hữu ích nếu bạn muốn tải xuống và lưu HTML trang web vào máy chủ vĩnh viễn
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
22Hàm file_get_contents[] của PHP cũng được sử dụng để lấy nội dung của URL mục tiêu
Tuy nhiên, cấu hình máy chủ sẽ cho phép đọc nội dung bằng cách sử dụng phương pháp này
PHP CURL đăng và nhận dữ liệu JSON
Ví dụ này cho thấy cách gửi một bài đăng cURL PHP ở định dạng JSON. Nó cũng nhận được phản hồi cURL ở định dạng JSON
Đoạn code này hướng dẫn tạo các dịch vụ API để nhận yêu cầu và gửi phản hồi ở định dạng JSON
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
23Mã này chuẩn bị phản hồi JSON bằng cách đặt loại nội dung bằng tiêu đề PHP[]. Nó đặt ứng dụng/json làm loại nội dung
php-curl-post-endpoint-json. php
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
24Xử lý chuyển hướng [HTTP 301,302]
CURLOPT_FOLLOWLOCATION được đặt thành true để thực hiện chuyển hướng 3XX qua PHP cURL
Trong quá trình chuyển hướng, cURL sẽ gửi yêu cầu GET trong các lần chuyển hướng liên tiếp. Để thay đổi điều này, CURLOPT_POSTREDIR phải được đặt
Chương trình này đặt CURL_REDIR_POST_ALL để gửi các yêu cầu POST cURL PHP trong các lần thử liên tiếp
Nó giới hạn số lần chuyển hướng bằng cách sử dụng hằng số CURLOPT_MAXREDIRS
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
25Chương trình này sẽ trả về nhiều thông tin như hình bên dưới
- số lần chuyển hướng
- Thời gian để chuyển hướng
- Tiêu đề có trạng thái 3XX
Viết nhật ký lỗi cURL vào một tệp
Giữ nhật ký là cách thực hành tốt nhất cho mục đích kiểm toán. Khi trang web hoạt động, đôi khi nhật ký cũng rất hữu ích để gỡ lỗi
Vì đây là cuộc gọi từ xa nên việc ghi lỗi cURL vào một tệp sẽ giúp phân tích và khắc phục sự cố
Đoạn code này hướng dẫn log lỗi xảy ra trong bài viết PHP cURL. Nó sử dụng hàm PHP curl_error[] để
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
26Viết nhật ký cURL bằng hằng số CURLOPT_STDERR
Có một phương pháp thay thế để ghi lỗi PHP cURL vào một tệp. CURLOPT_STDERR viết thông báo lỗi với tham chiếu xử lý tệp
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
27Chương trình này sẽ trả về đầu ra sau
Phần 3 – Tạo PHP cURL script trích xuất ảnh từ website
Trong phần này của bài viết, chúng ta sẽ tạo một thành phần cURL end-to-end. Nó sẽ làm như sau để lấy hình ảnh từ một trang web
- Tạo dịch vụ API để khởi tạo DOM để tải phản hồi
- Tạo dịch vụ cURL để khởi tạo, định cấu hình và thực hiện các yêu cầu
- Đọc phản hồi cURL và tải nó vào đối tượng DOM
- Nhận URL nguồn hình ảnh bằng cách truy cập đối tượng DOM
- Tạo một thư viện ảnh bằng cách sử dụng mảng phản hồi PHP cURL
Lớp dịch vụ API để khởi tạo cURL và tạo đối tượng DOM
Lớp GrabImageAPI này tạo các phiên bản PHP DOMDocument để tải trang web HTML
Hàm khởi tạo cURL và lấy phản hồi HTML hoàn chỉnh của URL. Sau đó, nó tải phản hồi này vào đối tượng DOM
Với tham chiếu của đối tượng, getWebsiteImage[] lấy URL nguồn hình ảnh
Hàm này đọc tất cả hình ảnh bằng cách sử dụng getElementsByTagName[]. Bằng cách lặp lại mảng dữ liệu hình ảnh, nó chuẩn bị gói JSON của các URL hình ảnh
Dịch vụ/GrabImageAPI. php
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
28Tạo dịch vụ cURL để thực hiện các hoạt động vòng đời thông thường
Lớp này không là gì ngoài việc thực hiện các thao tác cuộn tròn cơ bản mà chúng ta đã thấy ở phần đầu
Hàm tạo GrabImageAPI bao gồm dịch vụ này và tạo phiên bản cURL
Dịch vụ/CurlDịch vụ. php
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
29API kích hoạt để lấy hình ảnh qua bài đăng PHP cURL
Mã này sẽ nhấn API để lấy hình ảnh qua bài viết PHP cURL. Nó yêu cầu tham chiếu lớp API mà nó tạo thư viện hình ảnh động bằng cách sử dụng cURL
Mã này rất hữu ích để tạo tiện ích thư viện cho cửa hàng bên ngoài của bạn một cách độc lập
php-curl-lấy-hình ảnh. php
$token = "generated token code";
curl_setopt[
$ch,
CURLOPT_HTTPHEADER,
array[
'Content-Type: application/json', // for define content type that is json
'bearer: '.$token, // send token in header request
'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
]
];
20Sự kết luận
Hy vọng bài viết này giúp bạn có kiến thức sâu về PHP cURL post và các phương thức request khác
Các ví dụ ngắn và từ đầu đến cuối có thể hữu ích để tạo thành phần cURL cho ứng dụng của bạn
Tôi hoan nghênh ý kiến của bạn để tiếp tục mang lại nhiều giá trị gia tăng hơn cho người học.
Tải xuống
↑ Quay lại Đầu trang
Làm cách nào để bạn gửi yêu cầu POST trên cURL?
Để gửi dữ liệu với các yêu cầu POST và PUT, đây là các tùy chọn cuộn phổ biến. .
loại yêu cầu. -X BÀI. -X ĐẶT
tiêu đề loại nội dung
-H "Loại nội dung. ứng dụng/x-www-form-urlencoded"
-H "Loại nội dung. ứng dụng/json"
dữ liệu. biểu mẫu được mã hóa url. -d "param1=value1¶m2=value2" hoặc -d @data. txt
Tôi có thể sử dụng cURL trong PHP không?
cURL là thư viện PHP và công cụ dòng lệnh [tương tự như wget] cho phép bạn gửi và nhận tệp qua HTTP và FTP . Bạn có thể sử dụng proxy, truyền dữ liệu qua kết nối SSL, đặt cookie và thậm chí nhận tệp được bảo vệ bằng thông tin đăng nhập.
PHP xử lý yêu cầu cURL như thế nào?
php. $url = "https. //www. javatpoint. com/"; $ch = curl_init[]; curl_setopt[$ch, CURLOPT_RETURNTRANSFER, 1];