在我的代码中,我重复使用相同的连接来执行多个调用,一些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本应该做的。
答案 0 :(得分:0)
libcurl / curl保存您更改的属性的状态。 只需在GET请求之前或POST之后添加:
curl_setopt($this->jira, CURLOPT_CUSTOMREQUEST, NULL);