php curl发起get与post网络请求案例详解

admin3年前PHP教程27
curl介绍

curl是一个开源的网络链接库,支持http, http, ftp, gopher, telnet, dict, file, and ldap 协议。之前均益介绍了python版本的pycurl ,现在介绍怎么使用php版本的URL.

curl get请求2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function curl_get($url){
 
   $header = array(
       'Accept: application/json',
    );
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 超时设置,以秒为单位
    curl_setopt($curl, CURLOPT_TIMEOUT, 1);
 
    // 超时设置,以毫秒为单位
    // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
 
    // 设置请求头
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    //执行命令
    $data = curl_exec($curl);
 
    // 显示错误信息
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 打印返回的内容
        var_dump($data);
        curl_close($curl);
    }
}
curl post请求2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// $url 是请求的链接
// $postdata 是传输的数据,数组格式
function curl_post( $url, $postdata ) {
 
   $header = array(
       'Accept: application/json',
    );
 
    //初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // 超时设置
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
 
    // 超时设置,以毫秒为单位
    // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
 
    // 设置请求头
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE );
 
    //设置post方式提交
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    //执行命令
    $data = curl_exec($curl);
 
    // 显示错误信息
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 打印返回的内容
        var_dump($data);
        curl_close($curl);
    }
}
常用参数选项将 value 设置为备注CURLOPT_AUTOREFERERTRUE 时将根据  重定向时,自动设置 header 中的信息。 CURLOPT_BINARYTRANSFER设为 TRUE ,将在启用 CURLOPT_RETURNTRANSFER 时,返回原生的(Raw)输出。从 PHP 5.1.3 开始,此选项不再有效果:使用CURLOPT_RETURNTRANSFER 后总是会返回原生的(Raw)内容。CURLOPT_COOKIESESSION设为 TRUE 时将开启新的一次 cookie 会话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论是否为会话,都会储存、加载所有 cookie。会话 cookie 是指没有过期时间,只存活在会话之中。 CURLOPT_CERTINFOTRUE 将在安全传输时输出 SSL 证书信息到 。在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要开启 CURLOPT_VERBOSE 才有效。CURLOPT_CONNECT_ONLYTRUE 将让库执行所有需要的代理、验证、连接过程,但不传输数据。此选项用于 HTTP、SMTP 和 POP3。在 7.15.2 中添加。 PHP 5.5.0 起有效。CURLOPT_CRLF启用时将Unix的换行符转换成回车换行符。 CURLOPT_DNS_USE_GLOBAL_CACHETRUE 会启用一个全局的DNS缓存。此选项非线程安全的,默认已开启。 CURLOPT_FAILONERROR当 HTTP 状态码大于等于 400,TRUE 将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。 CURLOPT_SSL_FALSESTARTTRUE 开启 TLS False Start (一种 TLS 握手优化方式)cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。CURLOPT_FILETIMETRUE 时,会尝试获取远程文档中的修改时间信息。 信息可通过curl_getinfo()函数的CURLINFO_FILETIME 选项获取。 CURLOPT_FOLLOWLOCATIONTRUE 时将会根据服务器返回 HTTP 头中的  重定向。(注意:这是递归的, 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。 CURLOPT_FORBID_REUSETRUE 在完成交互以后强制明确的断开连接,不能在连接池中重用。 CURLOPT_FRESH_CONNECTTRUE 强制获取一个新的连接,而不是缓存中的连接。 CURLOPT_FTP_USE_EPRTTRUE 时,当 FTP 下载时,使用 EPRT (和 LPRT)命令。 设置为 FALSE 时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。 CURLOPT_FTP_USE_EPSVTRUE 时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令。设置为 FALSE 时禁用 EPSV。 CURLOPT_FTP_CREATE_MISSING_DIRSTRUE 时,当 ftp 操作不存在的目录时将创建它。 CURLOPT_FTPAPPENDTRUE 为追加写入文件,而不是覆盖。 CURLOPT_TCP_NODELAYTRUE 时禁用 TCP 的 Nagle 算法,就是减少网络上的小包数量。PHP 5.2.1 有效,编译时需要 libcurl 7.11.2 及以上。CURLOPT_FTPASCIICURLOPT_TRANSFERTEXT 的别名。 CURLOPT_FTPLISTONLYTRUE 时只列出 FTP 目录的名字。 CURLOPT_HEADER启用时会将头文件的信息作为数据流输出。 CURLINFO_HEADER_OUTTRUE 时追踪句柄的请求字符串。从 PHP 5.1.3 开始可用。CURLINFO_ 的前缀是有意的(intentional)。CURLOPT_HTTPGETTRUE 时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。 CURLOPT_HTTPPROXYTUNNELTRUE 会通过指定的 HTTP 代理来传输。 CURLOPT_MUTETRUE 时将完全静默,无论是何 cURL 函数。在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作为代替)CURLOPT_NETRCTRUE 时,在连接建立时,访问~/rc文件获取用户名和密码来连接远程站点。 CURLOPT_NOBODYTRUE 时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为 FALSE时不会变成 GET。 CURLOPT_NOPROGRESSTRUE 时关闭 cURL 的传输进度。 Note: PHP 默认自动设置此选项为 TRUE,只有为了调试才需要改变设置。 CURLOPT_NOSIGNALTRUE 时忽略所有的 cURL 传递给 PHP 进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。cURL 7.10时被加入。CURLOPT_PATH_AS_ISTRUE 不处理 dot dot sequences (即 ../ )cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。CURLOPT_PIPEWAITTRUE 则等待 pipelining/multiplexing。cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。CURLOPT_POSTTRUE 时会发送 POST 请求,类型为:,是 HTML 表单提交时最常见的一种。 CURLOPT_PUTTRUE 时允许 HTTP 发送文件。要被 PUT 的文件必须在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中设置。 CURLOPT_RETURNTRANSFERTRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。 CURLOPT_SAFE_UPLOADTRUE 禁用  前缀在 CURLOPT_POSTFIELDS 中发送文件。 意味着  可以在字段中安全得使用了。 可使用 CURLFile 作为上传的代替。PHP 5.5.0 中添加,默认值 FALSE。 PHP 5.6.0 改默认值为 TRUE。. PHP 7 删除了此选项, 必须使用 CURLFile interface 来上传文件。CURLOPT_SASL_IRTRUE 开启,收到首包(first packet)后发送初始的响应(initial response)。cURL 7.31.10 中添加,自 PHP 7.0.7 起有效。CURLOPT_SSL_ENABLE_ALPNFALSE 禁用 SSL 握手中的 ALPN (如果 SSL 后端的 libcurl 内建支持) 用于协商到 http2。cURL 7.36.0 中增加, PHP 7.0.7 起有效。CURLOPT_SSL_ENABLE_NPNFALSE 禁用 SSL 握手中的 NPN(如果 SSL 后端的 libcurl 内建支持),用于协商到 http2。cURL 7.36.0 中增加, PHP 7.0.7 起有效。CURLOPT_SSL_VERIFYPEERFALSE 禁止 cURL 验证对等证书(peer's certificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录。自cURL 7.10开始默认为 TRUE。从 cURL 7.10开始默认绑定安装。CURLOPT_SSL_VERIFYSTATUSTRUE 验证证书状态。cURL 7.41.0 中添加, PHP 7.0.7 起有效。CURLOPT_TCP_FASTOPENTRUE 开启 TCP Fast Open。cURL 7.49.0 中添加, PHP 7.0.7 起有效。CURLOPT_TFTP_NO_OPTIONSTRUE 不发送 TFTP 的 options 请求。自 cURL 7.48.0 添加, PHP 7.0.7 起有效。CURLOPT_TRANSFERTEXTTRUE 对 FTP 传输使用 ASCII 模式。对于LDAP,它检索纯文本信息而非 HTML。在 Windows 系统上,系统不会把  设置成二进制 模式。 CURLOPT_UNRESTRICTED_AUTHTRUE 在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。 CURLOPT_UPLOADTRUE 准备上传。 CURLOPT_VERBOSETRUE 会输出所有的信息,写入到,或在CURLOPT_STDERR中指定的文件。 

到此这篇关于php curl发起get与post网络请求案例详解的文章就介绍到这了,更多相关php curl发起get与post网络请求内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

PHP实现自动加载机制

php自动加载php自动载方法有两种.第一种方案用__autoload,这个函数较简单,也较弱.但有一问题没有解决, 就是在include前判断文件是否存在的问题.set_include_path(&...

哪些企业需要租用新加坡大带宽服务器

哪些企业需要租用新加坡大带宽服务器?以下是一些需要租用新加坡大带宽服务器的企业或组织:大型网站:需要高速互联网连接、高带宽和高可用性,以提供更好的用户体验和更高的访问速度。网络游戏公司:需要高速互联网...

php array_map与array_walk比较案例详解

array_map():1、array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空。2、回调函数接...

防火墙的作用体现在哪里?100G美国高防服务器如何防御网络攻击?

对于任何规模的企业来说,网络安全都是最紧迫的问题之一。主动防御是保护用户的业务数据和运营免受基于网络的攻击的唯一方法之一。监控网络流量以识别和阻止潜在威胁的防火墙应该是用户企业网络安全基础设施的基础。...

显卡服务器一般是用来做什么香港显卡服务器适合哪些行业购买

服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算...

PHP屏蔽错误的方法总结

1、@屏蔽法@在php中一个抑制错误的符号,即便是你开启了报错功能,只要在错误语句之前加上@符号,便可屏蔽了错误信息。使用@抑制错误之前,会出现一个警告错误。2、error_reporting屏蔽法在...