PHP curl - 在实例化的curl资源上获取POST字段?

时间:2013-12-12 20:20:41

标签: php curl libcurl

有没有办法检索curl资源上设置的POST字段?

e.g。

curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);

有没有办法从$payload检索$ch

我见过curl_getinfohttp://www.php.net/manual/en/function.curl-getinfo.php但似乎没有返回此类数据。

3 个答案:

答案 0 :(得分:1)

即使使用curl_getinfo,您也无法在发出请求之后提取POST数据。

根据您的评论,听起来您的代码正在进行curl_setopt来电,但您有几个地方可以这样做吗?

用于设置POST变量的瘦包装器怎么样

class SomeClient {
  private $post_vars = array();
  private $ch;

  private function _curl_setpostvar(array $post_vars) {
    $this->post_vars = array_merge($this->post_vars, $post_vars);
    curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_vars);
  }
}

现在,在句柄上设置POST变量时,您的其他实例方法可以替换_curl_setpostvar代替curl_setopt

即使在发送请求之前,POST变量也可以通过$this->post_vars获得。

答案 1 :(得分:1)

似乎唯一的方法是在设置数据时使用 CURLOPT_PRIVATE 属性,然后通过该键手动检索。

答案 2 :(得分:0)

我可能会认为没有简单的方法可以做到这一点。如果您需要这些数据进行调试,我建议您在课堂上使用数组,将其设置为:

$options = array( 
    //other cURL properties...
    CURLOPT_POST            => 1,
    CURLOPT_POSTFIELDS     => $curl_data,
    //other cURL properties...
);

然后在curl_setopt_array($ch, $options)之前使用curl_exec($ch)将其绑定到 cURL 描述符。