php curl CURLOPT_HTTPGET没有将方法设置回GET

时间:2016-03-25 09:41:14

标签: php curl

在我的代码中,我重复使用相同的连接来执行多个调用,一些GET,POST或PUT。 在PUT之后,我确实想要做一个GET,但它仍然保留旧的" PUT"方法。 我的代码示例:

第一个电话:

curl_setopt($this->jira, CURLOPT_URL, $url);
curl_setopt($this->jira, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($this->jira, CURLOPT_POSTFIELDS, json_encode($jiraput));
$response = curl_exec($this->jira);

第二次电话:

curl_setopt($this->jira, CURLOPT_URL, $url);
curl_setopt($this->jira, CURLOPT_HTTPGET, true);
curl_setopt($this->jira, CURLOPT_VERBOSE, true);
$response = curl_exec($this->jira);

详细日志告诉我:

* Found bundle for host domain.com: 0x227b490
* Re-using existing connection! (#3) with host domain.com
* Connected to url.domain.com (xx.xx.xx.xx) port 443 (#3)
> PUT /jira/rest/api/2/issue/DAM-188/editmeta HTTP/1.1

作为解决方法,我修改了第二个电话:

curl_setopt($this->jira, CURLOPT_URL, $url);
curl_setopt($this->jira, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($this->jira, CURLOPT_HTTPGET, true);
$response = curl_exec($this->jira);

但是,它没有意义,CURLOPT_HTTPGET本应该做的。

1 个答案:

答案 0 :(得分:0)

libcurl / curl保存您更改的属性的状态。 只需在GET请求之前或POST之后添加:

curl_setopt($this->jira, CURLOPT_CUSTOMREQUEST, NULL);