<?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);