首页 > 编程知识 正文

curl使用方法,phpcurl入门

时间:2023-05-05 07:27:56 阅读:59422 作者:3648

CURL是一个功能非常强大的开放源代码库,支持HTTP、FTP和TELNET等多种协议,用于发送HTTP请求。 优点是可以灵活的选项设置不同的HTTP协议参数,并支持HTTPS。 CURL可以根据URL前缀是" HTTP "还是" HTTPS "来自动选择是否加密发送内容。

在使用CURL发送请求的基本过程中,通常使用CURL的PHP扩展来完成HTTP请求的发送:

初始化连接句柄; 设置CURL选项; 释放运行以获取结果的VURL连接句柄。 以下过程是使用CURL发送HTTP的一般过程

//1 .初始化$ch=curl_init (; //2 .设置包含URL curl _ setopt ($ ch,CURLOPT_URL,' http://www.devdo.net ' )的选项; CURL_setopt($ch,CURLOPT_RETURNTRANSFER,1 ); CURL_setopt($ch,CURLOPT_HEADER,0 ); //3 .运行html文档内容$output=curl_exec($ch )获取的if($output===false ) echo'curlerror:'.curl_error //4 .释放curl句柄curl_close($ch ); 上面的代码使用了四个函数

每个CURL_init (和curl_close )都很容易初始化和关闭curl连接。 CURL_exec ) )执行curl请求,如果没有发生错误,则该函数返回是对应URL返回的数据,字符串中可以满足; 如果发生错误,函数返回FALSE。 需要注意的是,等号用于确定输出是否为FALSE。 这是为了区分返回空字符串的情况和错误。 CURL包装器中最重要的函数是CURL_setopt (),您可以通过设置CURL包装器定义的选项来定制HTTP请求。 上述代码片段使用了三个重要的选项。 CURLOPT_URL指定请求的URL。 如果将CURLOPT_RETURNTRANSFER设置为1,则稍后执行的curl_exec函数返回是URL返回字符串,而不是返回到标准输出的字符串并返回TRUE。 如果将CURLLOPT_HEADER设置为0,则不返回HTTP标头信息。 还有很多其他的CURL选项。 您可以在PHP官方网站(http://www.PHP.net/manual/en/function.CURL-setopt.PHP )上查看curl支持的所有选项的列表。

获取CURL请求的输出信息CURL_exec ) )函数运行后,可以使用CURL_getinfo )函数获取有关curl请求输出的信息。 示例代码如下:

CURL_exec($ch; $info=curl_getinfo($sh ); echo '获取'.$info['url'].'时间'.$info['total_time'].'秒'; 上述代码的curl_getinfo返回关联数组,其中包含以下数据:

url:网络地址。 content_type:内容编码。 http_code:HTTP状态代码。 header_size:header的大小。 request_size:请求的大小。 创建filetime:文件的时间。 ssl_verify_result:SSL验证结果。 redirect_count:跳跃计数。 total_time:需要时间。 namelookup_time:DNS查询需要很长时间。 connect_time:需要时间等待连接。 pretransfer_time:需要时间进行传输前准备。 size_uplpad:上传数据的大小。 size_download:下载数据的大小。 speed_download:的下载速度。 speed_upload:上传速度。 download_content_length:下载内容的长度。 upload_content_length:要上传的内容的长度。 starttransfer_time:开始传输的时间表。 redirect_time:重定向需要一些时间。 curl_getinfo ) )函数具有可选参数$opt。 使用此参数,可以设置与上术字段相对应的常数。 设置第二个参数后,只返回指定的信息。 例如,如果将$opt设置为CURLINFO_TOTAL_TIME,则curl_getinfo )函数只返回total_time,即总传输所需的时间。 如果只需要关注特定的传输信息,设置$opt参数是有意义的。

如何使用CURL发送GET请求使用CURL发送GET请求。 发送GET请求的关键是构建正确格式的URL。 请求地址和GET数据是“? 拆分,然后用“=”分隔GET变量的名称和值,并用“”连接每个GET名称和值。 PHP提供了用于构建GET请求和数据部分——http_build_query的函数。 此函数接受关联数组,并返回用关联数据编写的GET请求字符串。 使用此函数,您已关闭了用于发送GET请求的——doCurlGetRequest函数,并与CURL发送HTTP请求的常规过程配合使用。 具体代码如下。

** *@desc封闭curl的调用界面,get的请求方式。 */functiondocurlgetrequest ($ URL、$data、$timeout=5) if ) $curl=='||$timeout=0) {返回假; } $url=$url.'? http_bulid_query($data; $ con=curl _ init ((字符串) $url ); CURL_setopt($con,CURLOPT_HEADER,false ); CURL_setopt($con,CURLOPT_RETURNTRANSFER,true ); CURL_setopt($con,CURLOPT_TIMEOUT,) int ) $timeout ); returncurl_exec($con; }此函数将使用HTTP_build_query构建的带有GET参数的URL传递给CURL_init函数,并使用curl发送http请求。

要使用CURL发送开机自检请求,请使用CURL提供的CURLOPT_POSTFIELDS选项。 如果将此选项设置为POST字符串数据,则可以将请求包含在正文中。 同样,我们实现了发送开机自检请求的函数——doCurlPostRequest。 代码如下。

/**** @desc封装curl的调用接口、开机自检请求方式* */functiondocurlpostrequest ($ URL、$requestString、$timeout=5) if CURL_setopt($con,CURLOPT_HEADER,false ); curl_setopt($con,CURLOPT_POSTFIELDS,$requestString; CURL_setopt($con,CURLOPT_POST,true ); CURL_setopt($con,CURLOPT_RETURNTRANSFER,true ); CURL_setopt($con,CURLOPT_TIMEOUT,) int ) $timeout ); returncurl_exec($con; }在上面的代码中,除了CURLOPT_POSTFIELDS之外,还将CURL_POST设置为true,指示此请求为POST请求。 即使是POST请求也可以传输GET数据。 只需在URL中内置GET请求数据即可显示。

原文地址: http://www.dev do.net/PHP-curl.html

转载于:https://www.cn blogs.com/manongxiaobing/p/4698990.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。