首页 > 解决方案 > PHP CURL 类不接受对象参数

问题描述

我有一门用于 curl 查询的课程。使用 POST 方法对关闭的页面进行授权,存储 cookie,然后发出请求 GET 接收数据数组。该类旨在提高查询性能并减少时间。也就是说,我们建立一个连接并传递两个请求 GET 和 POST。

class Par {


    private $url;
    private $ch;

    public function __construct($print = false){
        $this->ch = curl_init();
        if (!$print){
            curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true) ;
        }
    }
    public function set($name, $value){
        curl_setopt($this->ch, $name, $value);
        return $this;
    }

    public function exec($url){
        curl_setopt($this->ch,  CURLOPT_URL, $url);
        return curl_exec($this->ch);
    }

    public function __destruct(){
        curl_close($this->ch);
    }
}

接下来,我将创建一个类对象,在其中设置参数集。我可以访问授权页面

$url_auth = 'http://site=user_login';
$url = 'http://site_search&group=1';

$auth_data = array(
    "login" => "login",
    "password" => "pas",
   
);

$parser = new Par();
$parser->set(CURLOPT_POST, true)
       ->set(CURLOPT_POSTFIELDS, http_build_query($auth_data))
      ->set(CURLOPT_FOLLOWLOCATION, 1)
       ->set(CURLOPT_COOKIEJAR, __DIR__ .'/cook.txt')
       ->set(CURLOPT_COOKIEFILE, __DIR__ .'/cook.txt');
    
$data = $parser->exec($url_auth);
print_r($data);

$parser->set(CURLOPT_CUSTOMREQUEST, 'GET')
       ->set(CURLOPT_COOKIEFILE, __DIR__ .'/cook.txt');

$data = $parser->exec($url);
print_r($data);

此代码执行 POST 请求。当我想设置 Get 选项时,我什么也得不到。错误在哪里?如何设置一个类的对象的参数,使得POST和GET两个请求被执行,连接只有一个。

标签: phpclasscurlphp-curl

解决方案


推荐阅读