PHP实现curl post和get
CURL这里就不说明了。以下是简单案例
一、POST
- //初始化
- $curl = curl_init();
- //设置抓取的url
- curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
- //设置头文件的信息作为数据流输出
- curl_setopt($curl, CURLOPT_HEADER, );
- //设置获取的信息以文件流的形式返回,而不是直接输出。
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
- //设置post方式提交
- curl_setopt($curl, CURLOPT_POST, );
- //设置post数据
- $post_data = array(
- "username" => "coder",
- "password" => ""
- );
- curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
- //执行命令
- $data = curl_exec($curl);
- //关闭URL请求
- curl_close($curl);
- //显示获得的数据
- print_r($data);
- POST
- private function _set_headers($user_agent , $client_ip )
- {
- $this->headers = [
- 'Content-Type: application/json;charset=UTF-8',
- 'Authorization: '. self::APP_KEY.':'.$this->sign,
- 'Date: ' .$this->gmt_date,
- 'Content-Length: ' .$this->content_len,
- 'X-FORWARDED-FOR:'. $client_ip,
- 'CLIENT-IP:'. $client_ip,
- 'User-Agent:'.$user_agent
- ];
- }
- private function http_post_json($url, $jsonStr)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, );
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, );
- curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
- //curl_setopt($ch,CURLOPT_PROXY,'118.0.0.1:8888');
- $response = curl_exec($ch);
- $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- return ['code' => $httpCode, 'msg' => $response];
- }
二、GET
- //初始化
- $curl = curl_init();
- //设置抓取的url
- curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
- //设置头文件的信息作为数据流输出
- curl_setopt($curl, CURLOPT_HEADER, );
- //设置获取的信息以文件流的形式返回,而不是直接输出。
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
- //执行命令
- $data = curl_exec($curl);
- //关闭URL请求
- curl_close($curl);
- //显示获得的数据
- print_r($data);
- GET
- //get获取合力token
- private function http_get_token()
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, self::GET_ACCESS_TOKEN_URL);
- curl_setopt($ch, CURLOPT_HEADER, );
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, );
- $data = curl_exec($ch);
- var_dump($data);die;
- $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- return ['code' => $httpCode, 'msg' => CJSON::decode($data, true)];
- }
- /**
- * 发起HTTP GET请求
- *
- * @param string $url 请求URL
- * @param string $host 请求主机HOST
- * @param array $params 请求参数
- */
- public function http_get($url, $host = '', $params = array(), $timeout=, $ms = false){
- if(is_array($params)){
- $getString= '';
- $getParams = array();
- foreach ($params as $key=>$val) {
- $getParams[] = $key.'='.($val);
- $getString = implode('&', $getParams);
- }
- //$getString = http_build_query($params);
- }else{
- $getString = $params;
- }
- $url .= "?" . $getString;
- if (function_exists('curl_init')) {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- if(!empty($host)){
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: ' . $host));
- }
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_USERAGENT, 'PHP5 Client ver: ' . phpversion());
- if(true === $ms){
- curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $timeout);
- }else{
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- }
- $result = curl_exec($ch);
- curl_close($ch);
- } else {
- // 发起请求
- $handle = fopen ( $url, 'r' );
- $result = "";
- if ($handle) {
- while ( ! feof ( $handle ) ) {
- $result .= fread ( $handle, );
- }
- fclose ( $handle );
- }
- }
- return $result;
- }
- /**
- * post请求
- * @param $url string
- * @param $host string
- */
- private function http_post($url, $host = '', $params = array(), $timeout=, $ms = false){
- if(is_array($params)){
- $postString = http_build_query($params);
- }else{
- $postString = $params;
- }
- if (function_exists('curl_init')) {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- if(!empty($host)){
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: ' . $host));
- }
- curl_setopt($ch, CURLOPT_POST, );
- curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_USERAGENT, 'YOUKU.COM PREMIUM API PHP5 Client ver: ' . phpversion());
- if(true === $ms){
- curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $timeout);
- }else{
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- }
- $result = curl_exec($ch);
- curl_close($ch);
- } else {
- $context = array(
- 'http' => array(
- 'method' => 'POST',
- 'header' => 'Content-type: application/x-www-form-urlencoded' . "\r\n".
- 'Host: '.$host . "\r\n".
- 'User-Agent: PHP5 Client ver: ' . phpversion() . "\r\n".
- 'Content-length: ' . strlen($postString),
- 'content' => $postString
- )
- );
- $contextId = stream_context_create($context);
- $handle = fopen($url, 'r', false, $contextId);
- $result = '';
- if ($handle) {
- while (!feof($handle)) {
- $result .= fgets($handle, );
- }
- fclose($handle);
- }
- }
- return $result;
- }
- //拨号请求
- function doCurlGetRequest($url, $data = [], $header = [], $timeout = ){
- if($url == "" || $timeout <= ){
- return false;
- }
- $url = $url.'?'.http_build_query($data);
- $curl = curl_init((string)$url);
- curl_setopt($curl, CURLOPT_HEADER, false);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
- curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
- curl_setopt($curl, CURLOPT_TIMEOUT, (int)$timeout);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //添加自定义的http header
- return curl_exec($curl);
- }
PHP实现curl post和get的更多相关文章
- 在PowerShell中使用curl(Invoke-WebRequest)
前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...
- php中实现的一个curl批处理的实例
curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...
- PHP curl 函数
转载http://sunking.sinaapp.com/archives/111 最近使用curl的时候,发现了一个比较好用的函数,当然是初级者适用的一个函数,就是curl_getinfo(), 在 ...
- curl -w,–write-out参数详解
顾名思义,write-out的作用就是输出点什么.curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出. 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{varia ...
- CURL HELP
CURL下载 在windows的系统环境变量中,将CURL的路径(curl.exe存放的路径)复制到"Path"变量的结尾 Usage: curl [options...] < ...
- curl的登录总结
demo1 <?php $curl=curl_init('http://www.baidu.com'); curl_exec($curl); curl_close($curl); ?> c ...
- php curl获取的数据不直接输出
curl获取页面内容,不直接输出到页面 必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true curl_setopt($ch, CURLOPT_RETURNTRANSFER ...
- PHP的CURL
使用CURL完成一个请求: 初始化连接句柄 设置CURL选项 执行并获取结果 释放CURL连接句柄 发送GET请求 function doGetRequest($url,$data,$timeout ...
- PHP curl报错“Problem (2) in the Chunked-Encoded data”解决方案
$s = curl_init(); curl_setopt($s, CURLOPT_POST, true); curl_setopt($s, CURLOPT_POSTFIELDS, $queryStr ...
- php获得远程信息到本地使用的3个函数:file_get_contents和curl函数和stream_get_contents
1:file_get_contents echo file_get_contents("http://www.php.com/index.php"); 2:curl funct ...
随机推荐
- Parallel.For循环与普通的for循环
前两天看书发现了一个新的循环Parallel.For,这个循环在循环期间可以创建多个线程并行循环,就是说循环的内容是无序的.这让我想到了我前面的牛牛模拟计算是可以用到这个循环的,我前面的牛牛模拟计算是 ...
- tomcat中文乱码
1. https://blog.csdn.net/qq_35038153/article/details/78430359 2. 1.修改apache-tomcat-9.0.14-windows-x6 ...
- 使用uiautomator2自动化测试app(二)------操作篇
提示: 1. 推荐使用python3以上的版本来进行开发 2. 手机使用安卓手机,版本最好不要太老,一根数据线 3. 安装虚拟机(博主使用雷电) 操作: 这里只简单的介绍一些uiautomator2的 ...
- 一篇文章理解Redis集群【转】
Redis作为一款性能优异的内存数据库,支撑着亿级数据量的社交平台,也成为很多互联网公司的标配.这里将以Redis Cluster 集群为核心,基于最新的Redis5版本,从原理到实战,玩儿转Redi ...
- c++优先队列(priority_queue)用法详解
转自csdn的文章,仅作为学习笔记.原文链接:https://blog.csdn.net/weixin_36888577/article/details/79937886 普通的队列是一种先进先出的数 ...
- Mapbox矢量瓦片标准(mapbox vector-tile-spec)
目录 1. 目标 2. 文件格式 2.1. 文件后缀 2.2 MIME类型 3. 投影和范围 4. 内部结构 4.1. 图层 4.2. 要素 4.3. 几何图形编码 4.4. 要素属性 4.5. 示例 ...
- 破解NFC卡
目录 概念 各种卡 IC卡存储器结构 破解工具 破解NFC卡 概念 各种卡 ID卡 工作在低频(125Khz) ID卡 特点 EM4XX系列,多为EM4100/EM4102卡 常用的固化ID卡,出厂固 ...
- Openresty与Tengine
Tengine官方网站:http://tengine.taobao.org/index_cn.html OpenResty官方网站:http://openresty.org/ Openresty和Te ...
- 使用 jpype 库实现 Python 调用 java 的 jar 包中的功能
一.what's the JPype JPype 是一个能够让 python 代码方便地调用 Java 代码的工具.在某些时候 java 的能力更强,我们可以用 java 写一个模块的功能然后用 Py ...
- Ubuntu16.04安装Supervisor
安装 sudo apt-get install supervisor 启动,否则会报 unix:///tmp/supervisor.sock no such file service supervis ...