国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP模擬http請求的方法詳解

2024-05-04 23:52:01
字體:
供稿:網(wǎng)友

本文實例講述了PHP模擬http請求的方法。分享給大家供大家參考,具體如下:

方法一:利用php的socket編程來直接給接口發(fā)送數(shù)據(jù)來模擬post的操作。

建立兩個文件post.php,getpost.php

post.php內(nèi)容如下:

<?php $flag = 0; $params = ''; $errno = ''; $errstr = ''; //要post的數(shù)據(jù)$argv = array(  'var1'=>'abc',  'var2'=>'how are you , my friend??');//構(gòu)造要post的字符串foreach ($argv as $key=>$value) {  if ($flag!=0) {    $params .= "&";    $flag = 1;  }  $params.= $key."="; $params.= urlencode($value);  $flag = 1;  }  $length = strlen($params);   //創(chuàng)建socket連接  $fp = fsockopen("localhost",81,$errno,$errstr,10) or exit($errstr."--->".$errno);  //構(gòu)造post請求的頭  $header = "POST /flandy/getpost.php HTTP/1.1/r/n";  $header .= "Host:127.0.0.1/r/n";  $header .= "Referer:/flandy/post.php/r/n";  $header .= "Content-Type: application/x-www-form-urlencoded/r/n";  $header .= "Content-Length: ".$length."/r/n";  $header .= "Connection: Close/r/n/r/n";  //添加post的字符串  $header .= $params."/r/n";  //發(fā)送post的數(shù)據(jù)  fputs($fp,$header);  $inheader = 1;  while (!feof($fp)) {    $line = fgets($fp,1024); //去除請求包的頭只顯示頁面的返回數(shù)據(jù)    if ($inheader && ($line == "/n" || $line == "/r/n")) {       $inheader = 0;    }    if ($inheader == 0) {     echo $line;    }  }fclose($fp);?>

getpost.php的內(nèi)容如下:

<?phpecho "this is the data posted";echo "<pre>";print_r($_REQUEST);echo "</pre>";?>

結(jié)果輸出:

this is the data postedArray(  [var1] => abc  [var2] => how are you , my friend??)

以上代碼在本機81端口下已經(jīng)通過測試。

方法二:使用PHP的curl擴展或HttpClient.class.php類,這兩個非常類似,下面簡單的列出curl的實現(xiàn)代碼。

兩個文件post2.php和getpost2.php

post2.php的內(nèi)容如下:

<?php$psecode = 'NDE005';$website = 'www.baidu.com';$amt = 1;$pwd = 123456;$ch = curl_init();$curl_url = "http://localhost:81/flandy/getpost2.php?web=" . $website ."&pwd=" . $pwd . "&action=check&pseid=" . $psecode ."&amt=" . $amt;curl_setopt($ch, CURLOPT_URL, $curl_url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接輸出,返回到變量$curl_result = curl_exec($ch);$result = explode(',', $curl_result);curl_close($ch);print_r($result);?>

getpost2.php的內(nèi)容如下:

<?phpecho "returndata<br>";echo "<pre>";print_r($_REQUEST);echo "</pre>";?>

結(jié)果輸出:

Array ( [0] => returndataArray(  [web] => 'wwwbaiducom'  [pwd] => 123456  [action] => check  [pseid] => 'NDE005'  [amt] => 1))

方法三:這個要借助第三方類庫HttpClient

可以到這里下載:http://scripts.incutio.com/httpclient/

或者點擊此處本站下載

<?phprequire_once 'HttpClient.class.php';$params = array('web' => 'www.baidu.com','pwd' => '123456','action' => 'check','pseid' => 'NDE005','amt' => 1);$pageContents = HttpClient::quickPost('http://localhost:81/flandy/getpost3.php', $params);$result = explode(',', $pageContents);print_r($result);?>

希望本文所述對大家PHP程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 江陵县| 吉安市| 霍州市| 吴川市| 威远县| 康乐县| 胶州市| 宁都县| 广河县| 台北县| 确山县| 景洪市| 萍乡市| 东山县| 临沧市| 耒阳市| 韶关市| 台前县| 泰兴市| 新竹市| 响水县| 阜新| 龙里县| 奉贤区| 得荣县| 密山市| 庄浪县| 玉屏| 吉林省| 咸宁市| 剑川县| 攀枝花市| 安新县| 黄梅县| 巨鹿县| 八宿县| 扶余县| 云阳县| 麻城市| 保靖县| 突泉县|