Home  >  Article  >  Backend Development  >  Detailed tutorial on sending request with php curl

Detailed tutorial on sending request with php curl

angryTom
angryTomOriginal
2019-07-31 16:33:139622browse

Detailed tutorial on sending request with php curl

If you want to know more about php, you can click: php tutorial

 cURLYou can use URL syntax to simulate a browser to transmit data. Because it is a simulated browser, it also supports multiple protocols, FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP protocols can be well supported, including: HTTPS authentication, HTTP POST method, HTTP PUT method, FTP upload, keyberos authentication, HTTP upload, proxy server, cookies, username/password authentication, download file breakpoints Resume upload, upload files at breakpoints, http proxy server pipeline, and even support IPv6, Scoket5 proxy server, upload files to FTP server through http proxy server, etc.

 Using PHP’s cURL library can easily and effectively crawl web pages. You only need to run a script, and then analyze the web pages you crawled, and then you can get the data you want programmatically. Whether you want to retrieve partial data from a link, take an XML file and import it into a database, or even simply retrieve the content of a web page, cURL is a powerful PHP library.

1. Basic steps for establishing CURL request in PHP

##①: Initialization

 

curl_init()

②: Set properties

 

curl_setopt(). There is a long list of cURL parameters to set, they can Specify various details of the URL request.

③: Execute and get the result

curl_exec()

④: Release the handle

 

curl_close()

2. Example:

php curl sends get request :

//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行命令
$data = curl_exec($curl);
echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //输出请求状态码
//关闭URL请求
curl_close($curl);
//显示获得的数据
print_r($data);

php curl sends post request:

//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://localhost/test/test.php');
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//设置post数据
$post_data = array(
    "title" => "1290800466",
    "content" => "3424243243"
);
//post提交的数据
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
//执行命令
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//显示获得的数据
print_r($data);

test.php:

<?php
$title = $_REQUEST[&#39;title&#39;];
$content = $_REQUEST[&#39;content&#39;];
error_log($title."\n",3,&#39;error.log&#39;);
error_log($content."\n",3,&#39;error.log&#39;);
echo &#39;ok&#39;;

3. PHP cURL function:

The following contains a list of PHP cURL functions:

Function Description
curl_close() Close a cURL session.
curl_copy_handle() Copy a cURL handle and all its options.
curl_errno() Returns the last error number.
curl_error() Returns a string that protects the most recent error in the current session.
curl_escape() Returns the escape string, URL encoding the given string.
curl_exec() Execute a cURL session.
curl_file_create() Create a CURLFile object.
curl_getinfo() Get information about a cURL connection resource handle.
curl_init() Initialize a cURL session.
curl_multi_add_handle() Add individual curl handles to the curl batch session.
curl_multi_close() Close a group of cURL handles.
curl_multi_exec() Runs a sub-connection of the current cURL handle.
curl_multi_getcontent() If CURLOPT_RETURNTRANSFER is set, returns the text stream of the obtained output.
curl_multi_info_read() Get the relevant transmission information of the currently parsed cURL.
curl_multi_init() Returns a new cURL batch handle.
curl_multi_remove_handle() Remove a handle resource in the curl batch handle resource.
curl_multi_select() Wait for all active connections in the cURL batch.
curl_multi_setopt() Set a batch cURL transfer option.
curl_multi_strerror() Returns a string text describing the error code.
curl_pause() Pause and resume the connection.
curl_reset() Resets all options of libcurl's session handle.
curl_setopt_array() Set options in batches for cURL transfer sessions.
curl_setopt() Set a cURL transfer option.
curl_share_close() Close the cURL shared handle.
curl_share_init() Initialize the cURL share handle.
curl_share_setopt() Sets the cURL transfer options for a shared handle.
curl_strerror() Returns a string description of the error code.
curl_unescape() Decode the URL-encoded string.
curl_version() Get cURL version information.

Returns TRUE on success, or FALSE on failure.

Some status codes

1xx: Request received, continue processing

2xx: Operation received successfully, analysis, Accept

3xx: Completion of this request must require further processing

4xx: The request contains an incorrect syntax or cannot be completed

5xx: The server failed to execute a fully valid request

100——The client must continue to make requests

101——The client requires the server to convert the HTTP protocol version according to the request

200——The transaction is successful

201——Prompt to know The URL of the new file

202——Accepted and processed, but the processing was not completed

203——The return information is uncertain or incomplete

204——The request was received, But the return information is empty

205 - The server has completed the request, the user agent must reset the currently browsed files

206 - The server has completed some users' GET requests

300——The requested resource is available in multiple places

301——Delete the request data

302——The request data was found at another address

303— —It is recommended that customers visit other URLs or access methods

304——The client has executed GET, but the file has not changed

305——The requested resource must be obtained from the address specified by the server

306——Code used in the previous version of HTTP, no longer used in the current version

307——Declaration that the requested resource is temporarily deleted

400——Bad request, Such as syntax error

401——Request authorization failed

402——Retain valid ChargeTo header response

403——Request not allowed

404—— No file, query or URL found

405 - The method defined by the user in the Request-Line field is not allowed

406 - According to the Accept drag sent by the user, the requested resource is not accessible

407 - Similar to 401, the user must first obtain authorization on the proxy server

408 - The client did not complete the request within the user-specified time

409 - For the current Resource status, request cannot be completed

410 - This resource no longer exists on the server and there is no further reference address

411 - The server rejects the user-defined Content-Length attribute request

412 - One or more request header fields are incorrect in the current request

413 - The requested resource is larger than the size allowed by the server

414 - The requested resource URL is longer than the server Allowed length

415 - The requested resource does not support the request item format

416 - The request contains the Range request header field, and there is no range indication value within the current requested resource range. The request

Does not include the If-Range request header field

417 - The server does not meet the expectations specified in the request Expect header field. If it is a proxy server, it may be that the next-level server cannot satisfy the request

500 - The server generated an internal error

501 - The server does not support the requested function

502 - The server is temporarily unavailable, sometimes to prevent system overload

503——The server is overloaded or suspended for maintenance

504——The gateway is overloaded. The server uses another gate or service to respond to the user, and the waiting time is set to a longer value.

505——Server The HTTP version specified in the request header is not supported or refused to be supported

The above is the detailed content of Detailed tutorial on sending request with php curl. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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