PHP> cURL>覆盖http方法>按顺序请求

时间:2017-03-10 12:12:23

标签: php curl

我正在疯狂地试图弄清楚发生在一段简单的代码中的事情。

我会编写更少的代码,因为我可以集中解决这个问题。

:定位

执行两个或多个具有相同句柄但选项不同的cURL请求。

cURL包装器部分

public function __construct(){
    $this->handle = curl_init();
}

public function execute(){
    $handle = $this->handle;
    # ... some default, not relevant, options ... #
    # Retrieve the http method
    $http_method = $this->http_method;
    # Set the method
    switch($http_method){
        case 'GET':
            curl_setopt($handle, CURLOPT_HTTPGET, true);
            break;
        case 'POST':
            curl_setopt($handle, CURLOPT_POST, true);
            break;
        default:
            curl_setopt($handle, CURLOPT_CUSTOMREQUEST, $http_method);
            break;
    }
    # Set the url
    curl_setopt($handle, CURLOPT_URL, $this->url);
    # Retrieve the payload
    $payload = $this->payload;
    # Set the payload
    if(!empty($payload)){
        # Specify data to send
        curl_setopt($handle, CURLOPT_POSTFIELDS, $payload);
    }
    # Execute the request
    $result = curl_exec($handle);
    # Reset the handle
    curl_reset($handle);
    # Update the handle
    $this->handle = $handle;
}

使用示例

    # First
    $obj->setHttpMethod('post');
    $obj->setURL("someurl");
    $payload = array(
        'field' => 'value'
    );
    $obj->setPayload($payload);
    $result = $obj->execute();

    # Second
    $obj->setHttpMethod('get');
    $obj->setURL("anotherurl");
    $result = $obj->execute();

结果

第二个是作为POST而不是GET执行的。

结论

提前致谢:我会喜欢任何建议。

1 个答案:

答案 0 :(得分:0)

只是将其作为答案发布:

当您执行POST请求时,已保留帖子字段,然后执行GET请求。

因此,将字段更改为null会使cUrl执行GET请求而不是POST