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 ... 
随机推荐
- sql server查看表大小
			查看SqlServer 数据库中各个表多少行 : SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id WH ... 
- Learning to Track Any Object
			Learning to Track Any Object 2019-10-28 12:14:49 Paper: https://arxiv.org/abs/1910.11844 1. 
- maven本地仓库已经有了所需的jar包,为什么还要去请求远程仓库
			问题 IDEA 中的maven 项目,一个jar包一直导入不进来,reimport 无效.从另一仓库把这个jar包拷贝到当前仓库,还是无效.mvn clean install -e U 发现加载这个j ... 
- 时间管理GTD
			时间管理—重要紧急四象限法则https://www.jianshu.com/p/30b2ab0dc20e<番茄工作法图解>—— 让你的工作高效起来https://www.jianshu.c ... 
- 深度相机Astra Pro测试教程
			最近在微信群内,很多群友在群友的推荐下,购买了Astra pro的深度相机,价格地道,物超所值!群友反馈积极,所以这里出一波简单的教程. 以下内容知识抛砖引玉,主要讲解windows下和Ubunt ... 
- Nginx打印json日志
			1.修改配置,在http{}中添加 log_format access_json '{"@timestamp":"$time_iso8601",' '" ... 
- IntelliJ IDEA 出现" java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.annotation"等错误
			在IDEA中建立Servlet使用javax.servlet.http.HttpServlet等类时,出现了如下错误: 原因:IntelliJ IDEA 没有导入 servlet-api.jar 这个 ... 
- 【设计】Facebook的语调设计-做的珍惜
			http://www.woshipm.com/pd/3206743.html 做的是真细呦 
- Difference between LinkedList vs ArrayList in Java
			source-url LinkedList implements it with a doubly-linked list. ArrayList implements it with a dynami ... 
- php7.4 更新特性
			PHP 7.4.0 Released! The PHP development team announces the immediate availability of PHP 7.4.0. This ... 
