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 ...
随机推荐
- js数组reduce()方法的使用和一些应用场景
reduce()的使用 reduce()方法为归并类方法,最常见的应用场景就是,计算数组中每一项的总和. reduce()方法会遍历数组的每一项,它接收两个参数: 第一个参数是:每次遍历都会调用的函数 ...
- getaddrinfo工作原理分析
getaddrinfo工作原理分析 将域名解析成ip地址是所有涉及网络通讯功能程序的基本步骤之一,常用的两个接口是gethostbyname和getaddrinfo,而后者是Posix标准推荐在新应用 ...
- Java编程思想之六访问权限控制
访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关. 访问权限控制的等级,从最大权限到最小权限依次为:public,protected,包访问权限(没有关键字)和private ...
- RSA前台加密后台解密的应用
写在前面 项目安全测试需要将登录功能修改, AES加密不符合要求, 现改为RSA非对称加密.(将登录密码加密后传给后台, 后台解密后再进行一系列的校验) .期间遇到了前台js加密但是后台解密失败的问题 ...
- 微信小程序支付接口之Django后台
本文链接:https://blog.csdn.net/qq_41860162/article/details/89098694Python3-django-微信小程序支付接口调用工具类生成一系列微信官 ...
- 批量实现ssh免密登录
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- 运维笔记--Linux查找指定目录下包含某字符串的文件
待整理: 参考:http://blog.sina.com.cn/s/blog_53d496960102xg5c.html 例: find /home/logstash/ -type f | xargs ...
- nodejs相关框架
sails https://sailsjs.com/documentation/concepts koa koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 ...
- hutool JAVA 工具类
https://hutool.cn/docs/#/ 入门和安装 A set of tools that keep Java sweet. -- 主页:https://hutool.cn/ | http ...
- 报错:pymysql.err.InternalError: (1054, "Unknown column 'AType' in 'field list'")
报错背景: 报错前sql代码展示: List = ['] # sql = "insert into test(id, name) value ("+"'"+ L ...