我有一个PHP类,用于将一些数据发送到服务器,并使用相同的开放连接获取一些数据。 问题是此代码将尝试在第二个请求中从第一个请求POST POST数据......
curl_setopt(self::$ecurl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt(self::$ecurl, CURLOPT_POSTFIELDS, $data);
$request=curl_exec(self::$ecurl);
curl_setopt(self::$ecurl, CURLOPT_CUSTOMREQUEST, "GET");
$request=curl_exec(self::$ecurl);
所以我需要解开CURLOPT_POSTFIELDS
的方法。我尝试使用curl_setopt(self::$ecurl, CURLOPT_POSTFIELDS, null);
,但无论如何curl在请求的标头中发送Posting 0 bytes...
。
另请注意,我需要使用完全相同的连接,因此我无法通过curl_init创建另一个连接。
答案 0 :(得分:4)
在上次请求之前将CURLOPT_HTTPGET
设置为true
。
来自PHP.net:
CURLOPT_HTTPGET
TRUE将HTTP请求方法重置为GET。由于GET是默认值,因此仅在请求方法已更改时才需要这样做。
答案 1 :(得分:0)
您可以将curl选项添加到数组中并使用curl_setopt_array
这将使取消设置(或设置)选项数组元素变得容易。
$options = array(
CURLOPT_URL => 'http://www.example.com/',
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => $post_data
);
// condition on which you want to unset
if ($condition == true) {
unset($options[CURLOPT_POSTFIELDS]);
}
...
curl_setopt_array($ch, $options);
// grab URL and pass it to the browser
curl_exec($ch);
我知道这是一个老问题,但仍然认为此方法很方便。