美工统筹SEO,为企业电子商务营销助力!
PHP摹拟http要求的体例详解
一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-26 09:03:48 阅读数: 155
本文实例报告了PHP摹拟http要求的体例。分享给大师供大师参考,详细以下:
体例一:操纵php的socket编程来间接给接口发送数据来摹拟post的操纵。
成立两个文件post.php,getpost.php
post.php内容以下:
<?php $flag = 0; $params = ""; $errno = ""; $errstr = ""; //要post的数据 $argv = array( "var1"=>"abc", "var2"=>"how are you , my friend??"); //机关要post的字符串 foreach ($argv as $key=>$value) { if ($flag!=0) { $params .= "&"; $flag = 1; } $params.= $key."="; $params.= urlencode($value); $flag = 1; } $length = strlen($params); //建立socket毗连 $fp = fsockopen("localhost",81,$errno,$errstr,10) or exit($errstr."--->".$errno); //机关post要求的头 $header = "POST /flandy/getpost.php HTTP/1.1 "; $header .= "Host:127.0.0.1 "; $header .= "Referer:/flandy/post.php "; $header .= "Content-Type: application/x-www-form-urlencoded "; $header .= "Content-Length: ".$length." "; $header .= "Connection: Close "; //增加post的字符串 $header .= $params." "; //发送post的数据 fputs($fp,$header); $inheader = 1; while (!feof($fp)) { $line = fgets($fp,1024); //去除要求包的头只显现页面的前往数据 if ($inheader && ($line == " " || $line == " ")) { $inheader = 0; } if ($inheader == 0) { echo $line; } } fclose($fp); ?>
getpost.php的内容以下:
<?php echo "this is the data posted"; echo "<pre>"; print_r($_REQUEST); echo "</pre>"; ?>
成果输入:
this is the data posted Array ( [var1] => abc [var2] => how are you , my friend?? )
以上代码在本机81端口下已经由进程测试。
体例二:利用PHP的curl扩大或HttpClient.class.php类,这两个很是近似,上面简略的列出curl的实古代码。
两个文件post2.php和getpost2.php
post2.php的内容以下:
<?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的内容以下:
<?php echo "returndata<br>"; echo "<pre>"; print_r($_REQUEST); echo "</pre>"; ?>
成果输入:
Array ( [0] => returndata Array ( [web] => "wwwbaiducom" [pwd] => 123456 [action] => check [pseid] => "NDE005" [amt] => 1 ) )
体例三:这个要借助第三方类库HttpClient
能够到这里下载:http://scripts.incutio.com/httpclient/
或点击此处本站下载。
<?php require_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相干内容感乐趣的读者可检查本站专题:《php curl用法总结》、《php socket用法总结》、《PHP收集编程技能总结》、《php面向工具法式设想入门教程》、《PHP数组(Array)操纵技能大全》、《php字符串(string)用法总结》、《php+mysql数据库操纵入门教程》及《php罕见数据库操纵技能汇总》
但愿本文所述对大师PHP法式设想有所赞助。