键盘农夫

好记性不如烂博客

php模拟POST请求的两种方法

通过fsockopen函数

<?php
//模拟发送POST请求
$url = "http://localhost/Post/server.php";//要请求的服务器地址

//要请求的内容
$post_data['user']        =    "root";
$post_data['password']    =     "1988725";

//转换请求内容
foreach($post_data as $key => $value)
{
    $requestArray[] = $key.'='.urlencode($value);
}
$requestString    =    implode("&",$requestArray);

//url
$url_info    =    parse_url($url);

if(!isset($url_info['port']))
{
    $url_info['port']    =    80;
    //模拟http请求头
    $request    .=    "POST ".$url_info['path']." HTTP/1.1\n";
    $request    .=    "Host: ".$url_info['host']."\n";
    $request    .=    "Content-type: application/x-www-form-urlencoded\n";
     $request    .=    "Content-length: ".strlen($requestString)."\n";
    $request    .=    "Connection: close\n";
     $request    .=    "\n";
    $request    .=    $requestString."\n";
}

$fp = fsockopen($url_info["host"], $url_info["port"]);
fputs($fp, $request);//把HTTP头发送出去

$inheader = 1;
while(!feof($fp))
{
    //$result 是提交后返回的数据
    $result .= fgets($fp, 1024);
}
echo $result;
fclose($fp);


通过 crul


<?php
//要请求的内容
$post_data['user']        =    "root";
//$post_data['password']    =     "1988725";
$post_data['file']        =    '@C:\Documents and Settings\chenzhi\My Documents\My Pictures\1286606098_38.jpg';

///$post_data['file']    =     '@'.$_FILES['image']['tmp_name'];
$ch        =    curl_init();
$curl_url    =    "http://172.16.27.51/server.php";
curl_setopt($ch,CURLOPT_URL,$curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
//$curl_result = curl_exec($ch);
//echo $curl_result;

curl_exec($ch);

注意,通过curl传送图片时,一定要记住要加@号,且不能用双引号,只能用单引号
阅读更多
个人分类: PHP
想对作者说点什么? 我来说一句

php curl 模拟post 提交

militala militala

2010-10-23 20:51:00

阅读数:20988

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭