php http发送get、post请求的几种方法

转摘:https://blog.csdn.net/u012366662/article/details/52800400

方法1: 用file_get_contents 以get方式获取内容

<?php  
url='http://www.domain.com/';html = file_get_contents(url);  
echohtml;  
?>

方法2: 用fopen打开url, 以get方式获取内容

<?php  
fp = fopen(url, 'r');  
//返回请求流信息(数组:请求状态,阻塞,返回值是否为空,返回值http头等)stream_get_meta_data($fp);
while(!feof(fp)) {result .= fgets(fp, 1024);  
}  
echo "url body:result";  
fclose($fp);  
?>

方法3:用file_get_contents函数,以post方式获取url

<?php  
data = array ('foo' => 'bar');  //生成url-encode后的请求字符串,将数组转换为字符串data = http_build_query(data);opts = array (  
<span style="white-space:pre">  </span>'http' => array (  
<span style="white-space:pre">      </span>'method' => 'POST',  
<span style="white-space:pre">      </span>'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .  
<span style="white-space:pre">      </span>"Content-Length: " . strlen(data) . "\r\n",  
<span style="white-space:pre">      </span>'content' =>data  
<span style="white-space:pre">  </span>)  
);  生成请求的句柄文件  
context = stream_context_create(opts);  
html = file_get_contents('http://localhost/e/admin/test.html', false,context);  
echo $html;  
?>

方法4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中

allow_url_fopen 选项开启
<?php  
function get_url (url,cookie=false)  
{  
url = parse_url(url);  
query =url[path]."?".url[query];  
echo "Query:".query;  
fp = fsockopen(url[host], url[port]?url[port]:80 , errno,errstr, 30);  
if (!fp) {  
return false;  
} else {request = "GET query HTTP/1.1\r\n";request .= "Host: url[host]\r\n";request .= "Connection: Close\r\n";  
if(cookie)request.="Cookie:   cookie\n";request.="\r\n";  
fwrite(fp,request);  
while()) {  
result .= @fgets(fp, 1024);  
}  
fclose(fp);  
returnresult;  
}  
}  
//获取url的html部分,去掉header  
function GetUrlHTML(url,cookie=false)  
{  
rowdata = get_url(url,cookie);  
if(rowdata)  
{  
body= stristr(rowdata,"\r\n\r\n");  
body=substr(body,4,strlen(body));  
returnbody;  
}  
    return false;  
}  
?>

方法5:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

<?php  
function HTTP_Post(URL,data,cookie,referrer="")  
{  
    // parsing the given URL  
URL_Info=parse_url(URL);  
    // Building referrer  
if(referrer=="") // if not given use this script as referrerreferrer="111";  
    // making string from data  
foreach(data as key=>value)  
values[]="key=".urlencode(value);data_string=implode("&",values);  
    // Find out which port is needed - if not given use standard (=80)  
if(!isset(URL_Info["port"]))  
URL_Info["port"]=80;  
    // building POST-request:request.="POST ".URL_Info["path"]." HTTP/1.1\n";request.="Host: ".URL_Info["host"]."\n";request.="Referer: referer\n";request.="Content-type: application/x-www-form-urlencoded\n";  
request.="Content-length: ".strlen(data_string)."\n";  
request.="Connection: close\n";request.="Cookie:   cookie\n";request.="\n";  
request.=data_string."\n";  
    fp = fsockopen(URL_Info["host"],URL_Info["port"]);  
fputs(fp, request);  
while(!feof(fp)) {  
result .= fgets(fp, 1024);  
}  
fclose(fp);  
    returnresult;  
}  
?>[size=13]  [/size]

方法6:使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

<?php  
ch = curl_init();timeout = 5;  
curl_setopt (ch, CURLOPT_URL, 'http://www.domain.com/');  
curl_setopt (ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt (ch, CURLOPT_CONNECTTIMEOUT,timeout);  
file_contents = curl_exec(ch);  
curl_close(ch);  
echofile_contents;  
?>

当然你可以用下面的例子来测试

function tj_post(remote_server,post_string) {  
  ch = curl_init();  
  curl_setopt(ch, CURLOPT_URL, remote_server);  
  curl_setopt(ch, CURLOPT_POSTFIELDS, 'mypost=' . post_string);  
  curl_setopt(ch, CURLOPT_RETURNTRANSFER, true);  
  curl_setopt(ch, CURLOPT_USERAGENT, "123456");data = curl_exec(ch);  
  curl_close(ch);  
  
  return $data;  
}

post_data = “a=xxx&b=123”;//参数可以根据实际情况写jieguo=tj_post(“你要post的网址”,$post_data);

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇