php curl用法,php_curl
使用CURL的PHP扩展发送HTTP请求通常有以下步骤:
初始化连接句柄;
设置卷曲选项;
执行并获得结果;
松开VURL连接手柄。
下面的程序片段是使用CURL发送HTTP的典型过程。
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
//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 ){
回声“卷曲错误:”。curl _ error($ ch);
}
//4.松开卷曲手柄
curl _ close($ ch);
?在上面的代码中,分别使用了CURL_init()和CURL_close()四个函数来初始化CURL连接和关闭CURL连接,比较简单。
CURL_exec()执行CURL请求。如果没有错误,这个函数返回的是对应URL返回的数据,满意度用字符串表示;如果出现错误,该函数将返回FALSE。需要注意的是,输出是否为假是用完全等号来判断的,完全等号用来区分返回空字符串的情况和出错的情况。
CURL库中最重要的函数是CURL_setopt(),它可以通过设置CURL库定义的选项来自定义HTTP请求。上面的代码片段中使用了三个重要选项:
CURLOPT_URL指定请求的URL;
CurlOPT_RETURNTRANSFER设置为1表示后面执行的curl_exec函数的返回是URL的返回字符串,而不是将返回字符串定向到标准输出并返回TRUE;
将CURLLOPT_HEADER设置为0意味着不返回HTTP头信息。
卷曲有很多选择。你可以在PHP官方网站(http://www . PHP . net/manual/en/function . CURL-setopt . PHP)查看CURL支持的所有选项列表。
获取CURL请求的输出信息。
在执行CURL_exec()函数后,可以使用curl_getinfo()函数获取CURL请求输出的相关信息。示例代码如下:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
curl _ exec($ ch);
$ info=curl _ getinfo($ sh);
Echo getting 。$info[url]。费时。$info[total_time]。秒;
?上面代码中curl_getinfo返回的是一个包含以下数据的关联数组:
Url:网络地址。
内容类型:内容代码。
Http_code:HTTP状态代码。
Header _ size:标题的大小。
请求大小:请求的大小。
Filetime:文件创建的时间。
Ssl_verify_result:SSL验证结果。
Redirect_count:跳转计数。
Total_time:总时间消耗。
Namelookup_time:DNS查询需要时间。
Connect_time:等待连接需要时间。
Pretransfer_time:传输前的准备需要时间。
Size_uplpad:上传数据的大小。
Size_download:下载数据的大小。
速度_下载:下载速度。
速度_上传:上传速度。
Download_content_length:下载内容的长度。
上传内容长度:上传内容的长度。
Starttransfer_time:开始传输的时间表。
Redirect_time:重定向需要时间。
curl_getinfo()函数还有一个CURLINFO_TOTAL_TIME的可选参数opt,所以curl_getinfo()函数只返回TOTAL_TIME,即总的传输时间。当只有一些传输信息需要注意时,设置$opt参数是有意义的。
使用CURL发送GET请求
如何使用CURL发送GET请求,发送GET请求的关键是组装正确格式的URL。请求地址和获取数据由“?”组成拆分,然后GET变量的名称和值用“=”分隔,每个GET名称和值用“.”连接。PHP为我们提供了一个函数来组装GET请求和数据部分——http_build_query。这个函数接受一个关联数组,并返回由关联数据描述的GET请求字符串。利用这个函数,结合CURL发送HTTP请求的一般流程,我们关闭了一个发送GET请求的函数——doCurlGetRequest。具体代码如下:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
**
*@desc关闭curl的调用接口,以及get的请求方式。
*/
函数doCurlGetRequest($url,$data,$timeout=5){
if($curl== $timeout=0){
返回false
}
$url=$url。?。http _ bulid _ query($ data);
$ con=curl _ init((string)$ URL);
curl_setopt($con,CURLOPT_HEADER,false);
curl_setopt($con,CURLOPT_RETURNTRANSFER,true);
curl_setopt($con,CURLOPT_TIMEOUT,(int)$ time out);
return curl _ exec($ con);
}
?这个函数使用HTTP_build_query将用GET参数组装的URL传递给CURL_init函数,然后使用CURL发送HTTP请求。
使用CURL发送POST请求
您可以使用CURL提供的选项CURL opt _ POST fields,并将该选项设置为POST字符串数据以将请求放入主体中。同样,我们实现了一个函数——doCurlPostRequest来发送POST请求,代码如下:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
/**
** @desc封装了curl的调用接口,以及post的请求方式。
**/
函数doCurlPostRequest($url,$requestString,$timeout=5){
if($ URL== $ request string== $ time out=0){
返回false
}
$ con=curl _ init((string)$ URL);
curl_setopt($con,CURLOPT_HEADER,false);
curl_setopt($con,CURLOPT_POSTFIELDS,$ request string);
curl_setopt($con,CURLOPT_POST,true);
curl_setopt($con,CURLOPT_RETURNTRANSFER,true);
curl_setopt($con,CURLOPT_TIMEOUT,(int)$ time out);
return curl _ exec($ con);
}
?在上面的代码中,除了设置CURLOPT_POSTFIELDS,我们还将CURL_POST设置为true,这表明这个请求是POST请求。GET数据也可以在POST请求中传输,只需在URL中组装GET请求数据。
版权归作者所有:原创作品来自博主小二上九8,转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。