霜天部落 | 专注PHP研发,研究LAMP高性能架构部署与优化

用php模拟post来提交数据

利用php的socket编程来直接给接口发送数据来模拟post的操作。

<?PHP    
    $flag 
0
;
    
//要post的数据 
    $argv 
= array(
      
'var1'=>'123'

      
'var2'=>'abc
); 
    //构造要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("127.0.0.1",80,$errno,$errstr,10) or exit($errstr."--->".$errno
); 
     
//构造post请求的头 
     
$header "POST /mobile/try.php HTTP/1.1\r\n"

     
$header .= "Host:127.0.0.1\r\n"

     
$header .= "Referer:/mobile/sendpost.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"

     
//发送post的数据 
     
fputs($fp,$header
); 
     
$inheader 1

     while (!
feof($fp
)) {
             
$line fgets($fp,1024); 
//去除请求包的头只显示页面的返回数据 
             
if ($inheader && ($line == "\n" || $line == "\r\n"
)) {
                 
$inheader 0

             } 
             if (
$inheader == 0
) { 
                 echo 
$line

             } 
     } 
    fclose($fp
); 
?>

 还可以使用php类HttpClient。http://scripts.incutio.com/httpclient/

 



There are 2 Comments to "用php模拟post来提交数据"