php 使用 curl 发送 post 数据
2014-07-09 19:51
615 查看
作为第三方开发商,经常会需要调用平台接口,远程调用,就要用到curl,其实质就是叫调用的方法与用到的参数以http post的方式发送至平台服务器。
简单的例子:
其实CURLOPT_POSTFIELDS的这个设置中,亦可以直接发送数组的,但是这样做的后果是严重增加的请求的时间,耗时大约在2秒多,同样的操作用socket方式操作则正常,在毫秒级别。
若将此处:curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
修改为:curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
则执行时间恢复正常。
************************************************************************
http_build_query — 生成 URL-encode 之后的请求字符串
)
使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。参数 formdata 可以是数组或包含属性的对象。一个 formdata 数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了 numeric_prefix 参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让
PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。
Example #1 [b]http_build_query() 使用示例[/b]
Example #2 http_build_query() 使用数字下标的元素
简单的例子:
$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));
则执行时间恢复正常。
************************************************************************
http_build_query — 生成 URL-encode 之后的请求字符串
说明
string http_build_query ( array $formdata [, string $numeric_prefix ])
使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。参数 formdata 可以是数组或包含属性的对象。一个 formdata 数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了 numeric_prefix 参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让
PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。
Example #1 [b]http_build_query() 使用示例[/b]
<?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_'); ?>
相关文章推荐
- php 使用 curl 发送 post 数据
- php 使用 curl 发送 post 数据
- php 使用 curl 发送 post 数据
- php 使用 curl 发送 post 数据
- php 使用 curl 发送 post 数据
- PHP发送POST请求的三种方式 分别使用curl file_get_content fsocket 来实现post提交数据
- php 使用 curl 发送 post 数据
- php使用curl发送json格式数据实例
- 使用PHP的CURL模拟POST采集开了viewstate的asp.net网页数据
- PHP下使用CURL方式POST数据至API接口的方法
- 使用curl发送post或者get数据
- 【php中的curl】使用curl完成POST数据给飞信接口
- PHP下使用CURL方式POST数据至API接口的代码
- php 通过curl post发送json数据实例
- PHP下使用CURL方式POST数据至API接口的方法
- php使用curl发送post连接
- PHP使用CURL函数获取HTTPS网页及POST数据示例
- php中使用curl发送JSON数据
- php使用curl发送post连接
- php使用curl发送json格式数据实例