介绍
本篇内容主要讲解“PHP模拟http请求的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP模拟http请求的方法”吧!
<强>方法一:利用PHP的套接字编程来直接给接口发送数据来模拟发布的操作。强>
建立两个文件post.php, getpost.php
。php内容如下:
& lt; php ? ,flag 美元;=,0; ,params 美元;=,& # 39;& # 39;; ,errno 美元;=,& # 39;& # 39;; ,errstr 美元;=,& # 39;& # 39;; ,//要发布的数据 $ argv =,阵列( & # 39;才能var1 # 39;=祝辞& # 39;abc # 39; & # 39;才能var2& # 39;=祝辞& # 39;请,断开连接,你,my 朋友? ? & # 39;);//构造要文章的字符串 foreach (argv 美元;as $关键=祝辞美元值),{ if 才能;($旗帜!=0),{ ,,,params 美元。=,“和“; ,,,flag 美元;=,1; ,,} params美元。才能=,美元关键!”=?,params美元。=,urlencode(美元值); 时间=美元才能flag 1; ,,} 时间=美元才能length strlen ($ params); ,,//创建插座连接=美元才能fp fsockopen (“localhost" 81美元errno, errstr美元,10),或是退出(美元errstr !”——→“errno美元);//才能构造帖子请求的头 时间=美元才能header “POST /flandy/getpost.php HTTP/1.1 \ r \ n"; 美元才能header 。=,“主持人:127.0.0.1 \ r \ n"; 美元才能header 。=,“推荐人:/flandy post.php \ r \ n"; 美元才能header 。=,“内容类型:,应用程序/x-www-form-urlencoded \ r \ n"; 美元才能header 。=,“内容长度:,“干净自己的美元长度;\ r \ n"; 美元才能header 。=,“连接:,关闭\ r \ n \ r \ n";//才能添加文章的字符串 美元才能header 。=,美元params干净\ r \ n";//发才能送帖子的数据 fputs才能(fp,头美元); 时间=美元才能inheader 1; while 才能;(! feof (fp)美元),{ ,,,line 美元;=,fgets (fp 1024美元);,//去除请求包的头只显示页面的返回数据 ,,,if (inheader 美元;,,,(line 美元;==,“\ n", | |, line 美元;==,“\ r \ n")), { ,,,,,,inheader 美元;=,0; ,,,} ,,,if (inheader 美元;==,0),{ ,,,,echo 美元行; ,,,} ,,} 文件关闭(fp); ?在
getpost。php的内容如下:
& lt; php ? echo “却;能够is 从而data posted"; echo “& lt; pre>“; print_r ($ _REQUEST); echo “& lt;/pre>“; ?在
结果输出:
却;能够is 从而data 发布 数组 ( [var1],才能=在abc [var2],才能=祝辞,请,断开连接,你,my 朋友吗? ? )
以上代码在本端机81口下已经通过测试。
<强>方法二:使用PHP的旋度扩展或HttpClient.class.php类>强,这两个非常类似,下面简单的列出旋度的实现代码。
两个文件post2.php和getpost2.php
post2。php的内容如下:
& lt; php ? 时间=美元psecode & # 39; NDE005& # 39;; 时间=美元website & # 39; www.baidu.com& # 39;; $ amt =, 1; 时间=美元pwd 123456; $ ch =, curl_init ();=美元curl_url “http://localhost: 81/flandy/getpost2.php ? web=?只website 美元。 “和pwd=?只pwd 美元;只“,行动=check& pseid=?只psecode 美元。 “和amt=?只amt美元; CURLOPT_URL, curl_setopt (ch,美元,美元curl_url); curl_setopt (ch,美元,CURLOPT_POST,, 1); curl_setopt (ch,美元,CURLOPT_RETURNTRANSFER,, 1);//不直接输出,返回到变量 $ curl_result =, curl_exec (ch); 时间=美元result 爆炸(& # 39;& # 39;,curl_result美元); curl_close (ch); print_r(结果); ?在
getpost2。php的内容如下:
& lt; php ? echo “returndata< br>“; echo “& lt; pre>“; print_r ($ _REQUEST); echo “& lt;/pre>“; 祝辞;
结果输出:
Array (,[0]=祝辞,returndata 数组 ( (网络),才能=祝辞,& # 39;wwwbaiducom& # 39; (pwd),才能=在123456年 (行动),才能=在检查 [pseid],才能=祝辞,& # 39;NDE005& # 39; (amt),才能=祝辞;1 ) )
<>强方法三:这个要借助第三方类库HttpClient 强>
可以到这里下载:http://scripts.incutio.com/httpclient/
& lt; php ? require_once & # 39; HttpClient.class.php& # 39;; params 美元;=,阵列(& # 39;网络# 39;,=祝辞,& # 39;www.baidu.com& # 39;, & # 39;pwd # 39;,=祝辞,& # 39;123456 & # 39; & # 39;行动# 39;,=祝辞,& # 39;检查# 39; & # 39;pseid& # 39;,=祝辞,& # 39;NDE005& # 39; & # 39;amt # 39;,=祝辞,1); $ pageContents =, HttpClient: quickPost (& # 39; http://localhost: 81/flandy getpost3.php& # 39;,,美元params); 时间=美元result 爆炸(& # 39;& # 39;,pagecontent美元); print_r(结果); nullPHP模拟http请求的方法