php curl 教程

<?php

#$url = 'http://sports.qq.com/';
#$url = 'https://wx.1314000.cn/';
#$url = 'http://localhost:8080/abc.html';

// 發起請求 方案1  不推薦用 對https支持不好,會給我們的服務器添加壓力
#$data = file_get_contents($url);

// 方案2 不推薦
//               域名            端口 錯誤碼  錯誤信息  超時時間
/*$data = '';
$fp = fsockopen("localhost", 8080, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET /abc.html HTTP/1.1\r\n";
    $out .= "Host: localhost\r\n";
    $out .= "User-Agent: MSIE\r\n";
    $out .= "Connection: Close\r\n\r\n";
    // 發送請求
    fwrite($fp, $out);
    while (!feof($fp)) {
    	// 接受
        $data .= fgets($fp, 128);
    }
    // 關閉資源
    fclose($fp);
}*/

$url = 'https://wx.1314000.cn/';
#$url = 'http://localhost:8080/abc.html';

// 文案3 推薦  curl是擴展,需要我們在php.ini文件中開啓的
function http_get($url){
	// 初始化
	$ch = curl_init();
	// 相關設置
	# 設置請求的URL地址
	curl_setopt($ch,CURLOPT_URL,$url);
	# 請求頭關閉
	curl_setopt($ch,CURLOPT_HEADER,0);
	# 請求的得到的結果不直接輸出,而是以字符串結果返回  必寫
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	# 設置請求的超時時間 單位秒
	curl_setopt($ch,CURLOPT_TIMEOUT,30);
	# 設置瀏覽器型號
	curl_setopt($ch,CURLOPT_USERAGENT,'MSIE001');

	# 證書不檢查
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);

	// 發起請求
	$data = curl_exec($ch);

	// 有沒有發生異常
	if(curl_errno($ch) > 0){
		// 把錯誤發送給客戶端
		echo curl_error($ch);
		$data = '';
	}

	// 關閉請求
	curl_close($ch);

	return $data;
}

function http_post($url,$ret){
	// 初始化
	$ch = curl_init();
	// 相關設置
	# 設置請求的URL地址
	curl_setopt($ch,CURLOPT_URL,$url);
	# 請求頭關閉
	curl_setopt($ch,CURLOPT_HEADER,0);
	# 請求的得到的結果不直接輸出,而是以字符串結果返回  必寫
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	# 設置請求的超時時間 單位秒
	curl_setopt($ch,CURLOPT_TIMEOUT,30);
	# 設置瀏覽器型號
	curl_setopt($ch,CURLOPT_USERAGENT,'MSIE001');

	# 證書不檢查
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);

	# 設置爲post請求
	# 開啓post請求
	curl_setopt($ch,CURLOPT_POST,1);
	# post請求的數據 
	curl_setopt($ch,CURLOPT_POSTFIELDS,$ret);

	// 發起請求
	$data = curl_exec($ch);

	// 有沒有發生異常
	if(curl_errno($ch) > 0){
		// 把錯誤發送給客戶端
		echo curl_error($ch);
		$data = '';
	}

	// 關閉請求
	curl_close($ch);

	return $data;
}
#echo http_post('http://localhost:8080/post.php',['id'=>1,'name'=>'張三']);


function http_post_file($url,$ret,$file=''){
	if (!empty($file)) {  // 有文件上傳
		# php5.5之前 '@'.$file;就可以進地文件上傳
		# $ret['pic'] = '@'.$file;
		# php5.6之後用此方法
		$ret['pic'] = new CURLFile($file);
	}
	// 初始化
	$ch = curl_init();
	// 相關設置
	# 設置請求的URL地址
	curl_setopt($ch,CURLOPT_URL,$url);
	# 請求頭關閉
	curl_setopt($ch,CURLOPT_HEADER,0);
	# 請求的得到的結果不直接輸出,而是以字符串結果返回  必寫
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	# 設置請求的超時時間 單位秒
	curl_setopt($ch,CURLOPT_TIMEOUT,30);
	# 設置瀏覽器型號
	curl_setopt($ch,CURLOPT_USERAGENT,'MSIE001');

	# 證書不檢查
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);

	# 設置爲post請求
	# 開啓post請求
	curl_setopt($ch,CURLOPT_POST,1);
	# post請求的數據 
	curl_setopt($ch,CURLOPT_POSTFIELDS,$ret);

	// 發起請求
	$data = curl_exec($ch);

	// 有沒有發生異常
	if(curl_errno($ch) > 0){
		// 把錯誤發送給客戶端
		echo curl_error($ch);
		$data = '';
	}
	// 關閉請求
	curl_close($ch);
	return $data;
}
# 絕對路徑
/*$file = __DIR__.'/1.jpg';
echo http_post_file('http://localhost:8080/post.php',['id'=>1,'name'=>'張三'],$file);*/


function http_request($url,$ret='',$file=''){
	if (!empty($file)) {  // 有文件上傳
		# php5.5之前 '@'.$file;就可以進地文件上傳
		# $ret['pic'] = '@'.$file;
		# php5.6之後用此方法
		$ret['pic'] = new CURLFile($file);
	}
	// 初始化
	$ch = curl_init();
	// 相關設置
	# 設置請求的URL地址
	curl_setopt($ch,CURLOPT_URL,$url);
	# 請求頭關閉
	curl_setopt($ch,CURLOPT_HEADER,0);
	# 請求的得到的結果不直接輸出,而是以字符串結果返回  必寫
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	# 設置請求的超時時間 單位秒
	curl_setopt($ch,CURLOPT_TIMEOUT,30);
	# 設置瀏覽器型號
	curl_setopt($ch,CURLOPT_USERAGENT,'MSIE001');

	# 證書不檢查
	curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
	curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);

	# 設置爲post請求
	if($ret){ # 如果 $ret不爲假則是post提交
		# 開啓post請求
		curl_setopt($ch,CURLOPT_POST,1);
		# post請求的數據 
		curl_setopt($ch,CURLOPT_POSTFIELDS,$ret);
	}
	// 發起請求
	$data = curl_exec($ch);
	// 有沒有發生異常
	if(curl_errno($ch) > 0){
		// 把錯誤發送給客戶端
		echo curl_error($ch);
		$data = '';
	}
	// 關閉請求
	curl_close($ch);
	return $data;
}

# GET
#echo http_request('https://wx.1314000.cn/');

$file = __DIR__.'/1.jpg';
echo http_post_file('http://localhost:8080/post.php',['id'=>1,'name'=>'張三'],$file);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章