一个常用的通过CURL发送HTTP请求的函数 ThinkPHP
在这里我也来分享一下我正在系统里用到的一个通过cURL来发送HTTP请求的函数。
/** * 发送HTTP请求方法 * @param string $url 请求URL * @param array $params 请求参数 * @param string $method 请求方法GET/POST * @return array $data 响应数据 */ function http($url, $params, $method = "GET", $header = array(), $multi = false){ $opts = array( CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => $header ); /* 根据请求类型设置特定参数 */ switch(strtoupper($method)){ case "GET": $opts[CURLOPT_URL] = $url . "?" . http_build_query($params); break; case "POST": //判断是否传输文件 $params = $multi ? $params : http_build_query($params); $opts[CURLOPT_URL] = $url; $opts[CURLOPT_POST] = 1; $opts[CURLOPT_POSTFIELDS] = $params; break; default: throw new Exception("不支持的请求方式!"); } /* 初始化并执行curl请求 */ $ch = curl_init(); curl_setopt_array($ch, $opts); $data = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if($error) throw new Exception("请求发生错误:" . $error); return $data; }调用方法:
//定义一个要发送的目标URL; $url = "https://www.xxx.com"; //定义传递的参数数组; $data["aaa"]="aaaaa"; $data["bbb"]="bbbb"; //定义返回值接收变量; $httpstr = http($url, $data, "POST", array("Content-type: text/html; charset=utf-8"));
温馨提示:如果客户端服务端都是php,由于php目前只能接收Content-Type: application/x-www-form-urlencoded提交的数据,也就是post表单提交的数据所以需要自行更改Content-Type的类型
这里还有几种PHP获取POST数据的方法汇总:http://www.jb51.net/article/61690.htm
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: php判断是否为ajax请求摘自thinkphp
- 下一篇: thinkphp ajax应用