这篇文章主要介绍了php实现模拟post请求用法,分析了php模拟post请求的三种常见用法,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了php实现模拟post请求的方法。分享给大家供大家参考。具体如下:
- class Request{
- public static function post($url, $post_data = '', $timeout = 5){//curl
- $ch = curl_init();
- curl_setopt ($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_POST, 1);
- if($post_data != ''){
- curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
- }
- curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
- curl_setopt($ch, CURLOPT_HEADER, false);
- $file_contents = curl_exec($ch);
- curl_close($ch);
- return $file_contents;
- }
- public static function post2($url, $data=array()){//file_get_content
- $postdata = http_build_query(
- $data
- );
- $opts = array('http' =>
- array(
- 'method' => 'POST',
- 'header' => 'Content-type: application/x-www-form-urlencoded',
- 'content' => $postdata
- )
- );
- $context = stream_context_create($opts);
- $result = file_get_contents($url, false, $context);
- return $result;
- }
- public static function post3($host,$path,$query,$others=''){//fsocket
- $post="POST $path HTTP/1.1/r/nHost: $host/r/n";
- $post.="Content-type: application/x-www-form-";
- $post.="urlencoded/r/n${others}";
- $post.="User-Agent: Mozilla 4.0/r/nContent-length: ";
- $post.=strlen($query)."/r/nConnection: close/r/n/r/n$query";
- $h=fsockopen($host,80);
- fwrite($h,$post);
- for($a=0,$r='';!$a;){
- $b=fread($h,8192);
- $r.=$b;
- $a=(($b=='')?1:0);
- }
- fclose($h);
- return $r;
- }
- }
- $url='http://******/con/Inter.php';
- $data=Request::post($url,array('api'=>'tag_list'));
- $data2=Request::post2($url,array('api'=>'tag_list'));
- echo $data;
希望本文所述对大家的php程序设计有所帮助。
新闻热点
疑难解答