Php将post数据映射到实体类,通过php发送post数据的3种方法

火车头采集器中在处理ASPX网页时经常要用到POST请求发送数据,然后返回结果

在制作一些php插件时经常要用到POST,

php有三种方法可以post数据,分别为Curl、socket、stream_context_create

header("Content-type: text/html; charset=gb2312");

/**

* Socket版本

* 使用方法:

* $post_string = "app=socket&version=beta";

* request_by_socket('www.te13.com','/restServer.php',$post_string);

*/

if(!empty($r))echo 1;

function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)

{

$socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);

if (!$socket) die("$errstr($errno)");

fwrite($socket, "POST $remote_path HTTP/1.0\r\n");

fwrite($socket, "User-Agent: Socket Example\r\n");

fwrite($socket, "HOST: $remote_server\r\n");

fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");

fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . '\r\n');

fwrite($socket, "Accept:*/*\r\n");

fwrite($socket, "\r\n");

fwrite($socket, "mypost=$post_string\r\n");

fwrite($socket, "\r\n");

$header = "";

while ($str = trim(fgets($socket, 4096))) {

$header .= $str;

}

$data = "";

while (!feof($socket)) {

$data .= fgets($socket, 4096);

}

return $data;

}

/**

* Curl版本

* 使用方法:

* $post_string = "app=request&version=beta";

* request_by_curl('http://www.te13.com/restServer.php',$post_string);

*/

function request_by_curl($remote_server, $post_string)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $remote_server);

curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_USERAGENT, "Jimmy's CURL Example beta");

$data = curl_exec($ch);

curl_close($ch);

//return $data;

}

/**

* 其它版本

* 使用方法:

* $post_string = "app=request&version=beta";

* request_by_other('http://www.te13.com/restServer.php',$post_string);

*/

function request_by_other($remote_server, $post_string)

{

$context = array(

'http' => array(

'method' => 'POST',

'header' => 'Content-type: application/x-www-form-urlencoded' .

'\r\n'.'User-Agent : Jimmy\'s POST Example beta' .

'\r\n'.'Content-length:' . strlen($post_string) + 8,

'content' => 'mypost=' . $post_string)

);

$stream_context = stream_context_create($context);

$data = file_get_contents($remote_server, false, $stream_context);

return $data;

}

//echo $jietime = 90 * 86400 + time();

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值