dooso0594 2017-03-10 12:12
浏览 52
已采纳

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

I'm going crazy trying to figure out whats happening to an easy piece of code.

I'll write less code as I can to focus the issue.

Target

Execute two or more cURL requests with the same handle but different options.

cURL wrapper portion

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;
}

Sample of use

    # 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();

Result

Second is executed as a POST instead of GET.

Conclusion

Thanks in advance: I will love any suggestion.

  • 写回答

1条回答 默认 最新

  • drsfgwuw61488 2017-03-10 15:01
    关注

    Just to post it as an answer:

    The post fields are already retained when you do a POST request, and subsequently do a GET request.

    Thus, changing the fields to null, would make cUrl do a GET request rather than POST.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗