Home > Web Front-end > JS Tutorial > Several classic application examples of CURL in PHP_javascript skills

Several classic application examples of CURL in PHP_javascript skills

WBOY
Release: 2016-05-16 16:18:22
Original
1556 people have browsed it

1. Basic steps of cURL request:

(1)Initialization
(2) Set options, including URL
(3) Execute and obtain HTML document content
(4) Release cURL handle

Copy code The code is as follows:

//1. Initialization
$ch = curl_init();

//2. Set options, including URL
curl_setopt($ch, CURLOPT_URL, "http://www.cnblogs.com/it-cen/");

//Return the information obtained by curl_exec() in the form of a file stream instead of outputting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//The header file information will be output as a data stream when starting
curl_setopt($ch, CURLOPT_HEADER, 1);

//3. Execute and obtain the content of the HTML document
curl_exec($ch);

//4. Release handle
curl_close($ch);

echo $ch;

?>

Note: The second step is the most important, which is the curl_setopt() function

We can add a statement to check errors. Note that "===false" is used here to distinguish between empty output and the Boolean value false

Copy code The code is as follows:

$output = curl_exec($ch);

If ($output === false) {
              echo "cURL Error:".curl_error($ch);
}

The curl_getinfo() function returns information related to this request after cURL is executed, which is useful for debugging and troubleshooting:

Copy code The code is as follows:

curl_exec($ch);
$info = curl_getinfo($ch);
echo '
';<br>
          print_r($info);                                                      
echo '
';

Returned data


Copy code The code is as follows:
Array
(
[url] => http://www.cnblogs.com/it-cen/
[content_type] => text/html; charset=utf-8
[http_code] => 200
[header_size] => 312
[request_size] => 61
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.172
[namelookup_time] => 0.016
[connect_time] => 0.063
[pretransfer_time] => 0.063
[size_upload] => 0
[size_download] => 14658   //Requested data size
[speed_download] => 85220 
[speed_upload] => 0
[download_content_length] => 14658
[upload_content_length] => 0
[starttransfer_time] => 0.125
[redirect_time] => 0
[certinfo] => Array
(
)

[redirect_url] =>
)

2. This information is very useful in debugging. For example, when cURL is crawling, the crawled data may often be incomplete due to network and other reasons. This is what we can obtain through The data calculates the filesize, and then compares it with the one obtained by curl_getinfo(). If the sizes are equal, it is deemed that the download is correct, otherwise the download is repeated.

Let’s look at an example of grabbing an image:


Copy code The code is as follows:

header("Content-Type: image/png");

//1. Initialization
$ch = curl_init();

//2. Set options, including URL
curl_setopt($ch, , CURLOPT_URL, "http://img04.taobaocdn.com/tfscom/TB1omaTHXXXXXajXVXXtKXbFXXX.png");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

//3. Execute and obtain content
$res = curl_exec($ch);

//Get information
$info = curl_getinfo($ch);

//4. Release resources
curl_close($ch);

file_put_contents("d:/aa.png", $res);

$size = filesize("d:/aa.png");

if ($size != $info['size_download']) {
echo "The downloaded data is incomplete, please download again";
} else {
             echo "Download data is complete";
}


?>

3. Use POST method to send data in cURL

Copy code The code is as follows:

$ch = curl_init();

$data = array('name'=>'kelly', 'age'=>27, 'sex'=>1);

curl_setopt($ch, CURLOPT_URL, "http://localhost.post.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Set to post
curl_setopt($ch, CURLOPT_POST, 1);
//Add
to the post variable curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

$res = curl_exec($ch);

curl_close($ch);

echo $res;


?>

Use this method to simulate leaving a message, or you can sit on a water-filling robot. The idea is the same

4. Upload files using cURL

Copy code The code is as follows:

//Request uploaded data
$data = array('name'=>'beauty', "upload"=>"@a.zip");

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1/Socket/upload_file.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$res = curl_exec($ch);

curl_close($ch);

echo $res;

?>

Note: When sending a file, prefix the file name with @ and use the full path

5. cURL setting items

In fact, cURL has many configuration options. These options are the soul of cURL. They are set through setopt(). Here is a summary of several common and important configuration items. I hope it will be helpful to readers when they use cURL in the future. Help:


CURLOPT_AUTOREFERER: When redirecting based on location:, automatically set the Referer: information in the header

CURLOPT_COOKIESESSION: When enabled, cURL will tightly pass a session cookie and ignore other cookies

CURLOPT_HEADER: Output the header file information as a data stream

CURLOPT_INFILESIZE: Set the size of the uploaded file in bytes

CURLOPT_MAXCONNECTS: Maximum number of connections allowed

CURLOPT_MAXREDIRS: Specify the maximum number of HTTP redirects

CURLOPT_COOKIE: Set the content of the "cookie:" part of the HTTP request. Multiple cookies are followed by a semicolon, and there is a space after the semicolon

CURLOPT_POSTFIELDS: All data is sent using the "POST" operation in the HTTP protocol. To send files, add @ prefix in front of the file name and use the full path

......

Please refer to the PHP manual for more specific configuration items

cURL is very powerful. It is a universal library and is not unique to PHP.

I hope readers will gain something from studying several classic cURL examples in this blog post.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template