curl

Posted brady-wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了curl相关的知识,希望对你有一定的参考价值。

简单的例子:

 
$url ‘http://‘;  //调用接口的平台服务地址
 
$post_string array(‘a‘=>‘b‘); 
  
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch); 
curl_close($ch);
 
   其实CURLOPT_POSTFIELDS的这个设置中,亦可以直接发送数组的,但是这样做的后果是严重增加的请求的时间,耗时大约在2秒多,同样的操作用socket方式操作则正常,在毫秒级别。
 
   若将此处:curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
   修改为:curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
 
则执行时间恢复正常
 
  
 
PS:
 
http_build_query — 生成 URL-encode 之后的请求字符串
说明
string http_build_query ( array $formdata [, string $numeric_prefix ] )
 
使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。参数 formdata 可以是数组或包含属性的对象。一个 formdata 数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了 numeric_prefix 参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让 php 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。
 
    Note:
 
    用 arg_separator.output 来分隔参数。
 
      
 
Example #1 http_build_query() 使用示例
<?php
$data array(‘foo‘=>‘bar‘,
              ‘baz‘=>‘boom‘,
              ‘cow‘=>‘milk‘,
              ‘php‘=>‘hypertext processor‘
             );
               
echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
?>
 
Example #2 http_build_query() 使用数字下标的元素
<?php
$data array(‘foo‘‘bar‘‘baz‘‘boom‘‘cow‘ => ‘milk‘‘php‘ =>‘hypertext processor‘);
               
echo http_build_query($data);
 
  
echo http_build_query($data‘myvar_‘);
 
?>

以上是关于curl的主要内容,如果未能解决你的问题,请参考以下文章

CentOS yum 命令出现 [Errno 14] curl#6 - &quot;Couldn&#39;t resolve host ...&quot; 的解决方法(代码片段

有啥方法可以让 curl 连接并让我在输入时输入和发送身体片段?

使用PHP中的curl发送请求

转:PHP中的使用curl发送请求(GET请求和POST请求)

最简单的代码,CURL获取页面

从 curl_exec 获取响应代码、标头和内容