php 模拟post请求

Posted 读家记忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 模拟post请求的主要内容,如果未能解决你的问题,请参考以下文章

CURL模拟POST请求实例

使用PHP Socket 编程模拟Http post和get请求

PHP 模拟POST请求

php curl模拟post请求提交数据样例总结

php中模拟post,get请求和接受请求详细讲解

php curl模拟post请求的例子