用php模拟post来提交数据

时间:2009-09-05 00:34:31   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:eight: 18px;"> <?PHP /************************************************************************ Name: POST 测试程序 Vesion: 1.0 Date: 2004-08-05 *************************************************************************/ $flag = 0; //要post的数据 $argv = array(    'var1'=>'abc',   &#...
  正文:

利用PHP的socket编程来直接给接口发送数据来模拟post的操作。下面第二电脑给大家讲解一下代码

 <?PHP /************************************************************************
Name: POST 测试程序 Vesion: 1.0 Date: 2004-08-05 *************************************************************************
/ $flag = 0;
 //要post的数据
$argv = array(
    'var1'=>'abc',
    'var2'=>'你好吗');
//构造要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

Snoopy http://sourceforge.net/projects/snoopy/
or httpClient http://scripts.incutio.com/httpclient/

来源:http://www.002pc.com/master/College/Programming/PHP/2008-11-27/4208.html

收藏到:

关于《用php模拟post来提交数据》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td