Làm cách nào để sử dụng phản hồi cURL trong PHP?

cURL là phần mềm mà bạn có thể sử dụng để thực hiện các yêu cầu khác nhau bằng các giao thức khác nhau. PHP có tùy chọn sử dụng cURL và trong bài viết này, chúng tôi sẽ hiển thị một số ví dụ

Khái niệm cơ bản về cURL PHP

curl_init();      // initializes a cURL session
curl_setopt();    // changes the cURL session behavior with options
curl_exec();      // executes the started cURL session
curl_close();     // closes the cURL session and deletes the variable made by curl_init();

PHP cURL POST Yêu cầu

Yêu cầu POST thường được thực hiện để gửi dữ liệu do người dùng thu thập đến máy chủ

Làm cách nào để sử dụng phản hồi cURL trong PHP?
Làm cách nào để sử dụng phản hồi cURL trong PHP?

 'foo',
    'secondFieldData' => 'bar'
);

$cURLConnection = curl_init('http://hostname.tld/api');
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $postRequest);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);

$apiResponse = curl_exec($cURLConnection);
curl_close($cURLConnection);

// $apiResponse - available data from the API request
$jsonArrayResponse - json_decode($apiResponse);

PHP cURL NHẬN Yêu cầu

Yêu cầu GET truy xuất dữ liệu từ máy chủ. Đây có thể là HTML của trang web, phản hồi API hoặc các tài nguyên khác

Tiêu đề PHP cURL

Bạn cũng có thể đặt tiêu đề tùy chỉnh trong yêu cầu cURL của mình. Đối với điều này, chúng ta sẽ sử dụng hàm curl_setopt()

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Header-Key: Header-Value',
    'Header-Key-2: Header-Value-2'
));

Kiểm tra các lệnh liên quan đến PHP khác và cách thực hiện phổ biến. Nhận tài khoản lưu trữ chia sẻ mới với chiết khấu lên tới 40% và thành thạo các kỹ năng PHP của bạn

Nhiều API công khai đang sử dụng các tiêu đề tùy chỉnh để truyền tải một số dữ liệu bổ sung như giới hạn tốc độ hoặc hạn chế truy cập cho người dùng. Khi sử dụng XMLHttpRequests trong JavaScript, bạn có thể dễ dàng lấy chúng bằng hàm getAllResponseHeaders() hoặc getResponseHeader(headerName). Một vài ngày trước, tôi đã sử dụng một API mới với các tiêu đề tùy chỉnh với cURL trong PHP và tôi nghĩ rằng cũng sẽ có một chức năng tích hợp dễ dàng cho việc này

Tuy nhiên, sau khi tìm kiếm nhanh, tôi nhận ra rằng không có giải pháp tích hợp nào cho việc này. May mắn thay, với thêm một chút công việc, bạn vẫn có thể nhận được các tiêu đề phản hồi

Tiêu đề phản hồi trong cURL

Có một giải pháp đơn giản được tích hợp trong cURL nếu bạn chỉ quan tâm đến tiêu đề phản hồi chứ không phải nội dung của phần thân. Bằng cách đặt các tùy chọn CURLOPT_HEADERCURLOPT_NOBODY thành true, kết quả của

 'foo',
    'secondFieldData' => 'bar'
);

$cURLConnection = curl_init('http://hostname.tld/api');
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $postRequest);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);

$apiResponse = curl_exec($cURLConnection);
curl_close($cURLConnection);

// $apiResponse - available data from the API request
$jsonArrayResponse - json_decode($apiResponse);
0 sẽ chỉ chứa các tiêu đề. Điều này hữu ích khi bạn chỉ cần các tiêu đề, nhưng hầu hết thời gian, chúng tôi cũng cần nội dung của yêu cầu

Giải pháp cho vấn đề này cũng nằm trong tùy chọn CURLOPT_HEADER. Đặt nó thành true sẽ bao gồm các tiêu đề trong đầu ra của

 'foo',
    'secondFieldData' => 'bar'
);

$cURLConnection = curl_init('http://hostname.tld/api');
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $postRequest);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);

$apiResponse = curl_exec($cURLConnection);
curl_close($cURLConnection);

// $apiResponse - available data from the API request
$jsonArrayResponse - json_decode($apiResponse);
0. Tuy nhiên, không có tùy chọn CURLOPT_NOBODY, giờ đây chúng tôi có một đầu ra chứa các tiêu đề và nội dung của yêu cầu và chúng tôi cần tách chúng ra. Điều này có thể được thực hiện với tham số XMLHttpRequests0 trong hàm XMLHttpRequests1, tham số này sẽ cho chúng ta biết độ dài của tiêu đề và chúng ta có thể dễ dàng sử dụng giá trị đó để tạo hai chuỗi con cho tiêu đề và nội dung.

Tại thời điểm này, chúng tôi có một chuỗi dài với tất cả các tiêu đề không đặc biệt thân thiện với người dùng. Vì vậy, hãy triển khai một hàm để tạo một mảng kết hợp đẹp mắt với tên tiêu đề là khóa và giá trị của chúng là giá trị

Một ví dụ hoàn chỉnh

Hãy bắt đầu bằng cách tạo một API ví dụ nhanh và đặt một số tiêu đề tùy chỉnh

Bây giờ, hãy thực hiện một yêu cầu cURL đối với API thử nghiệm của chúng tôi và sử dụng chức năng từ trước để loại bỏ các tiêu đề tùy chỉnh và nội dung cơ thể cùng một lúc

Nếu chúng ta nhìn vào đầu ra của tập lệnh, chúng ta có thể thấy rằng chúng ta nhận được các giá trị từ các tiêu đề tùy chỉnh của mình và vẫn có quyền truy cập vào các giá trị trong phần thân

CUSTOM_HEADER: Hello World
API_REQUEST_COUNTER: 42
API_REQUEST_LIMIT: 69
Body: {"result":true,"someValue":420}

Mặc dù không có giải pháp tích hợp để truy xuất các giá trị tiêu đề phản hồi trong cURL trong PHP, nhưng chúng ta có thể dễ dàng tạo hàm tùy chỉnh của riêng mình cho nó. Bằng cách đặt một tùy chọn đặc biệt, các tiêu đề được bao gồm trong đầu ra và chúng tôi có thể tách chúng khỏi nội dung của yêu cầu. Sau đó, chúng ta có thể biến chúng thành một mảng kết hợp thân thiện với người dùng và dễ dàng truy cập các giá trị của chúng. Nếu bạn đang sử dụng bất kỳ API nào có tiêu đề tùy chỉnh bằng cách sử dụng cURL trong PHP, thì đây là một công cụ rất hữu ích cần có

Làm cách nào để nhận mã phản hồi từ cURL PHP?

php $ch = curl_init($url);

Làm cách nào để sử dụng lệnh cURL trong PHP?

php. // tạo tài nguyên cURL. $ch = curl_init() ; . .
$fp = fopen("example_homepage. txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
if(curl_error($ch)) {
fwrite($fp, curl_error($ch));

cURL trả về gì trong PHP?

Giá trị trả về ¶ . Tuy nhiên, nếu tùy chọn CURLOPT_RETURNTRANSFER được đặt, nó sẽ trả về kết quả nếu thành công, sai nếu thất bại. Hàm này có thể trả về giá trị Boolean false nhưng cũng có thể trả về giá trị không phải Boolean được đánh giá là false. true on success or false on failure. However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, false on failure. This function may return Boolean false , but may also return a non-Boolean value which evaluates to false .

Làm cách nào để nhận phản hồi JSON bằng cURL trong PHP?

Để nhận JSON bằng Curl, bạn cần thực hiện yêu cầu HTTP GET và cung cấp Chấp nhận. tiêu đề yêu cầu ứng dụng/json . Tiêu đề yêu cầu ứng dụng/json được chuyển đến máy chủ với tùy chọn dòng lệnh curl -H và cho máy chủ biết rằng máy khách đang mong đợi phản hồi JSON.