PHP模拟http请求的方法

  介绍

本篇内容主要讲解“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(结果);   null

PHP模拟http请求的方法