我正在疯狂地试图弄清楚发生在一段简单的代码中的事情。
我会编写更少的代码,因为我可以集中解决这个问题。
:定位
执行两个或多个具有相同句柄但选项不同的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执行的。
结论
提前致谢:我会喜欢任何建议。
答案 0 :(得分:0)
只是将其作为答案发布:
当您执行POST请求时,已保留帖子字段,然后执行GET请求。
因此,将字段更改为null
会使cUrl
执行GET
请求而不是POST
。