curl介绍

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

curl get请求

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请求

// $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_AUTOREFERER TRUE 时将根据 Location: 重定向时,自动设置 header 中的Referer:信息。  
CURLOPT_BINARYTRANSFER 设为 TRUE ,将在启用 CURLOPT_RETURNTRANSFER 时,返回原生的(Raw)输出。 从 PHP 5.1.3 开始,此选项不再有效果:使用CURLOPT_RETURNTRANSFER 后总是会返回原生的(Raw)内容。
CURLOPT_COOKIESESSION 设为 TRUE 时将开启新的一次 cookie 会话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论是否为会话,都会储存、加载所有 cookie。会话 cookie 是指没有过期时间,只存活在会话之中。  
CURLOPT_CERTINFO TRUE 将在安全传输时输出 SSL 证书信息到 STDERR 在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要开启 CURLOPT_VERBOSE 才有效。
CURLOPT_CONNECT_ONLY TRUE 将让库执行所有需要的代理、验证、连接过程,但不传输数据。此选项用于 HTTP、SMTP 和 POP3。 在 7.15.2 中添加。 PHP 5.5.0 起有效。
CURLOPT_CRLF 启用时将Unix的换行符转换成回车换行符。  
CURLOPT_DNS_USE_GLOBAL_CACHE TRUE 会启用一个全局的DNS缓存。此选项非线程安全的,默认已开启。  
CURLOPT_FAILONERROR 当 HTTP 状态码大于等于 400,TRUE 将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。  
CURLOPT_SSL_FALSESTART TRUE 开启 TLS False Start (一种 TLS 握手优化方式) cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。
CURLOPT_FILETIME TRUE 时,会尝试获取远程文档中的修改时间信息。 信息可通过curl_getinfo()函数的CURLINFO_FILETIME 选项获取。  
CURLOPT_FOLLOWLOCATION TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。  
CURLOPT_FORBID_REUSE TRUE 在完成交互以后强制明确的断开连接,不能在连接池中重用。  
CURLOPT_FRESH_CONNECT TRUE 强制获取一个新的连接,而不是缓存中的连接。  
CURLOPT_FTP_USE_EPRT TRUE 时,当 FTP 下载时,使用 EPRT (和 LPRT)命令。 设置为 FALSE 时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。  
CURLOPT_FTP_USE_EPSV TRUE 时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令。设置为 FALSE 时禁用 EPSV。  
CURLOPT_FTP_CREATE_MISSING_DIRS TRUE 时,当 ftp 操作不存在的目录时将创建它。  
CURLOPT_FTPAPPEND TRUE 为追加写入文件,而不是覆盖。  
CURLOPT_TCP_NODELAY TRUE 时禁用 TCP 的 Nagle 算法,就是减少网络上的小包数量。 PHP 5.2.1 有效,编译时需要 libcurl 7.11.2 及以上。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT 的别名。  
CURLOPT_FTPLISTONLY TRUE 时只列出 FTP 目录的名字。  
CURLOPT_HEADER 启用时会将头文件的信息作为数据流输出。  
CURLINFO_HEADER_OUT TRUE 时追踪句柄的请求字符串。 从 PHP 5.1.3 开始可用。CURLINFO_ 的前缀是有意的(intentional)。
CURLOPT_HTTPGET TRUE 时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。  
CURLOPT_HTTPPROXYTUNNEL TRUE 会通过指定的 HTTP 代理来传输。  
CURLOPT_MUTE TRUE 时将完全静默,无论是何 cURL 函数。 在 cURL 7.15.5 中移出(可以使用 CURLOPT_RETURNTRANSFER 作为代替)
CURLOPT_NETRC TRUE 时,在连接建立时,访问~/.netrc文件获取用户名和密码来连接远程站点。  
CURLOPT_NOBODY TRUE 时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为 FALSE时不会变成 GET。  
CURLOPT_NOPROGRESS TRUE 时关闭 cURL 的传输进度。 Note: PHP 默认自动设置此选项为 TRUE,只有为了调试才需要改变设置。  
CURLOPT_NOSIGNAL TRUE 时忽略所有的 cURL 传递给 PHP 进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。 cURL 7.10时被加入。
CURLOPT_PATH_AS_IS TRUE 不处理 dot dot sequences (即 ../ ) cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。
CURLOPT_PIPEWAIT TRUE 则等待 pipelining/multiplexing。 cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。
CURLOPT_POST TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。  
CURLOPT_PUT TRUE 时允许 HTTP 发送文件。要被 PUT 的文件必须在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中设置。  
CURLOPT_RETURNTRANSFER TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。  
CURLOPT_SAFE_UPLOAD TRUE 禁用 @ 前缀在 CURLOPT_POSTFIELDS 中发送文件。 意味着 @ 可以在字段中安全得使用了。 可使用 CURLFile 作为上传的代替。 PHP 5.5.0 中添加,默认值 FALSE。 PHP 5.6.0 改默认值为 TRUE。. PHP 7 删除了此选项, 必须使用 CURLFile interface 来上传文件。
CURLOPT_SASL_IR TRUE 开启,收到首包(first packet)后发送初始的响应(initial response)。 cURL 7.31.10 中添加,自 PHP 7.0.7 起有效。
CURLOPT_SSL_ENABLE_ALPN FALSE 禁用 SSL 握手中的 ALPN (如果 SSL 后端的 libcurl 内建支持) 用于协商到 http2。 cURL 7.36.0 中增加, PHP 7.0.7 起有效。
CURLOPT_SSL_ENABLE_NPN FALSE 禁用 SSL 握手中的 NPN(如果 SSL 后端的 libcurl 内建支持),用于协商到 http2。 cURL 7.36.0 中增加, PHP 7.0.7 起有效。
CURLOPT_SSL_VERIFYPEER FALSE 禁止 cURL 验证对等证书(peer's certificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录。 自cURL 7.10开始默认为 TRUE。从 cURL 7.10开始默认绑定安装。
CURLOPT_SSL_VERIFYSTATUS TRUE 验证证书状态。 cURL 7.41.0 中添加, PHP 7.0.7 起有效。
CURLOPT_TCP_FASTOPEN TRUE 开启 TCP Fast Open。 cURL 7.49.0 中添加, PHP 7.0.7 起有效。
CURLOPT_TFTP_NO_OPTIONS TRUE 不发送 TFTP 的 options 请求。 自 cURL 7.48.0 添加, PHP 7.0.7 起有效。
CURLOPT_TRANSFERTEXT TRUE 对 FTP 传输使用 ASCII 模式。对于LDAP,它检索纯文本信息而非 HTML。在 Windows 系统上,系统不会把 STDOUT 设置成二进制 模式。  
CURLOPT_UNRESTRICTED_AUTH TRUE 在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。  
CURLOPT_UPLOAD TRUE 准备上传。  
CURLOPT_VERBOSE TRUE 会输出所有的信息,写入到STDERR,或在CURLOPT_STDERR中指定的文件。  

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

php curl发起get与post网络请求案例详解的更多相关文章

  1. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  2. ios – 错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器

    当我尝试在设备上运行应用程序时出现此错误.当我在模拟器上运行它并且post请求正常工作时,我没有收到此错误.这是我的代码片段:任何帮助表示赞赏.谢谢解决方法此错误通常会提示DNS相关问题.检查设备上的DNS设置并确认您可以使用Safari或其他浏览器浏览互联网.如果有一个url,你可以在同一台服务器上获取,尝试直接在设备上的Safari中访问它.

  3. ios – Xcode Bot:如何在post触发器脚本上获得.ipa路径?

    我正在使用机器人来存档iOS应用程序,我需要获取.ipa产品路径才能将其发布到我们的分发系统中.机器人设置:并使用脚本打印所有env变量,其中不包含ipa文件的路径.此外,一些变量指向不存在的目录,即:XCS_OUTPUT_DIR这里的env变量输出:除此之外,我还能够确认.ipa文件是在另一个文件夹中创建的(/IntegrationAssets//

  4. ios – 使用CocoaPods post install hook将自定义路径添加到HEADER_SEARCH_PATHS

    解决方法在Podfile中定义一个方法:然后在post_install中调用该方法:

  5. ios – 如何处理退款/取消应用内购买

    我正在尝试处理iOS的退款应用内购买.但我找不到明确的指导方针来做到这一点.所以我有一个会员类型的应用程序内购买功能,其中用户凭据不一定与itunes帐户绑定.当有人进行购买时,我可以参考哪种标识符,并且当他们通过苹果申请退款时具有相同的标识符?我需要立即取消会员资格.谢谢!解决方法我最终存储了收据字符串并运行cron来完成事务并查找取消字段.

  6. iOS7 Safari中的全屏模式

    我正在使用SenchaTouch开发移动网站.在iOS7Safari中,我无法创建顶级地址栏和下面的工具栏消失了.Sencha过去常常处理iOS6,但iOS7最近的一些变化导致了这个问题.http://java.dzone.com/articles/safari-ios-7-and-html5我阅读了上面的链接&对于HTML5游戏而言,这似乎也是一个问题.一些其他应用程序.适用于iOS6的旧win

  7. ios – 如何使用新的Apple Swift语言发布JSON

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  8. ios – POST请求使用application / x-www-form-urlencoded

    后端开发人员在POST请求中给出了这些说明:>路线:{url}/{app_name/{controller}/{action}控制器和动作应该是小帽子.>API测试链接:http:****************>请求应该使用POST方法.>参数应通过请求内容体(FormUrlEncodedContent)传递.>参数应该是json格式.>参数是关键的.在协议中没有经验5,我搜索并结束了我的代码.

  9. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  10. ios – 在HTTPBody中设置NSDictionary并使用POST方法发送

    我想用POST方法调用Web服务.我需要发布一个带有URL的字典.我的Web服务参数如下:以下是我的要求:但是我收到以下错误:服务器拒绝此请求,因为请求实体的格式不受所请求方法所请求资源的支持解决方法请找到以下代码,将数据发布到Web服务.请注意这是我在我的一个申请中使用的样本.希望这可以帮助.从您的评论“服务器拒绝此请求”服务器是否支持JSON或XML格式.

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部