curl可以根据是否是http或则是https选择加密发送的内容;

使用curl发送请求的基本流程

1,初始化连接句柄;

2,设置curl选项;

3,执行并获取结果;

4,释放curl连接句柄;

例子:

//初始化

$ch = curl_init();

//设置选项

curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com");

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //参数意思:如果成功只将结果返回,不自动输出任何内容

curl_setopt($ch,CURLOPT_HEADER,0);

//执行并获取html内容

$output = curl_exec($ch);

if($output == false){

echo "curl error:".curl_error($ch);

}

//释放句柄

curl_close($ch);

curl中最重要的函数是curl_setopt()

获取curl请求输出的信息:

curl_exec($ch);

$info = curl_getinfo($ch);

获取curl的请求内容.$info;

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.php提供了一个函数来专门拼装GET请求和数据部分----http_build_query(),该函数接受一个关联数组,返回由该关联数据描述的GET请求字符串;

例子如下:

//封装curl的get请求方式;doCurlGetRequest()

function doCurlGetRequest($url,$data,$timeout = 5){

if($url == '' || $data = ' '){

return false;

}

$url = $url . '?'.http_build_query($data);

$ch  =  curl_init((string)$url);

curl_setopt($ch , CURLOPT_HEADER,false);

curl_setopt($ch , CURLOPT_RETURNTRANSFER , true);

curl_setopt($ch , CURLOPT_TIMEOUT , (int)$timeout);

return curl_exec($ch);

}

这个函数把使用http_build_query()拼装好的带GET参数的URL传给curl_init()函数,然后使用curl发送http请求。

使用CURL发送POST请求

可以使用CURLOPT_POSTFIELDS,设置该选项为POST就可以把请求放到正文中。

例子如下:

function doCurlPostRequest($url , $requestString , $timeout = 5){

$ch = curl_init(string($url));

curl_setopt($ch , CURLOPT_HEADER , false);

curl_setopt($ch , CURLOPT_POSTFIELDS , $requeststring);

curl_setopt($ch , CURLOPT_POST , true);

curl_setopt($ch , CURLOPT_RETURNTRANSFER , true);

curl_setopt($ch , CURLOPT_TIMEOUT , $timeout);

return curl_exec($ch);

}

原文地址:http://blog.csdn.net/will5451/article/details/76211536

php中的curl的一些参数总结的更多相关文章

  1. curl -w,–write-out参数详解

    顾名思义,write-out的作用就是输出点什么.curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出. 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{varia ...

  2. PHP中使用cURL实现Get和Post请求的方法

    1.cURL介绍  cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特 ...

  3. php中的curl使用入门教程和常见用法实例

    摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...

  4. php中的curl】php中curl的详细解说

    本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GO ...

  5. PHP中的CURL函数库

    PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话curl_copy_handle — 拷贝一个curl连接资源的所有内 ...

  6. PHP中使用CURL实现GET和POST请求

    转自:http://www.smsyun.com/home-index-page-id-284.html 一.什么是CURL? cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议, ...

  7. PHP中使用cURL

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性 ...

  8. LINUX curl GET 掉参数解决办法

    LINUX curl GET 掉参数解决方法 url 为 http://mywebsite.com/index.php?a=1&b=2&c=3web形式下访问url地址,使用 $_GE ...

  9. 在PHP中使用CURL,“撩”服务器只需几行——php curl详细解析和常见大坑

    在PHP中使用CURL,"撩"服务器只需几行--php curl详细解析和常见大坑 七夕啦,作为开发,妹子没得撩就"撩"下服务器吧,妹子有得撩的同学那就左拥妹子 ...

随机推荐

  1. 20145127 《Java程序设计》第四次实验报告

    在本周,我们进行了Andirod部分的学习,这一次实验是使用Andirod Studio来运行简单的Andirod小程序,并在自己的手机虚拟机上显示自己的学号,为了达到这一效果,我在Andirod S ...

  2. tf.reduce_sum tensorflow维度上的操作

    tensorflow中有很多在维度上的操作,本例以常用的tf.reduce_sum进行说明.官方给的api reduce_sum( input_tensor, axis=None, keep_dims ...

  3. ubuntu下交叉编译ffmpeg

    环境:ubuntu16.04 交叉编译器版本:4.8.3 依赖x264,lame x264: 1.wget ftp://ftp.videolan.org/pub/x264/snapshots/last ...

  4. WebApi——json返回多了 k_BackingField

    产生原因: model类添加了    [System.Serializable] 解决方案: xxxxx.WebApi\App_Start\WebApiConfig.cs的Register函数中添加如 ...

  5. 【TCP/IP详解 卷一:协议】第一章概论 学习笔记

    第一章 概述 游览了一下,本章主要是简介OSI模型的低层(1-4层).介绍了TCP/IP协议族的相关知识. TCP/IP的分层 Application <--> TCP / UDP < ...

  6. R语言 sub与gsub函数的区别

    > text <- c("we are the world", "we are the children") > sub("w&qu ...

  7. 数据库与hadoop与分布式文件系统的区别和联系

    转载一篇关系数据库与Hadoop的关系的文章 1. 用向外扩展代替向上扩展 扩展商用关系型数据库的代价是非常昂贵的.它们的设计更容易向上扩展.要运行一个更大的数据库,就需要买一个更大的机器.事实上,往 ...

  8. java命令行执行程序解决依赖外部jar包的问题

    用java命令行直接执行程序,如果这个程序需要引用外部jar包.就不能单纯用java xx来执行 如果你的jar包和程序就在一个目录: 编译 javac -cp D:\yy\yy.jar,D\xx\x ...

  9. PROC怎么遇到错误全局rollback---SQLServer 异常的处理

    ALTER PROCEDURE [dbo].[PROC_SMSACTIVE_UPDATE] AS BEGIN SET XACT_ABORT ON

  10. 使用CMake在Linux下编译tinyxml静态库

    环境:CentOS6.6+tinyxml_2_6_21.下载并解压tinyxml_2_6_2.zip unzip tinyxml_2_6_2.zip 2.在tinyxml文件夹里创建一个CMakeLi ...