2010-01-04 948 views
3

我正在使用PHP curl方法获取字符串类型响应。要创建我使用的请求:使用curl获取URL响应的值

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, $data); 

$response = curl_exec($ch); 
$err = curl_error($ch); 

curl_close($ch); 

if($response === false) 
    throw new Exception(__CLASS__."::".__FUNCTION__."_".$err); 
return $response; 

为什么我总是收到一个bool(true)响应,而不是从另一端回显的字符串?

感谢

+0

你说的 ' “真正的” 响应' 呢? $是字符串“真”还是布尔真? – GZipp 2010-01-04 20:41:59

回答

10

既然你已经有

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

在你的代码。 curl_exec应该已经返回页面的内容而不是BOOL。

这是我使用的库的一个片段。正如指出的,这可能是不需要的,但它帮了我一次......

//The content - if true, will not download the contents 
curl_setopt($ch, CURLOPT_NOBODY, false); 

而且好像还涉及到CURLOPT_NOBODY一些错误(这或许可以解释为什么你有这样的问题):

+0

他希望身体被返回,用'CURLOPT_NOBODY'身体甚至不会被下载。 – Wim 2010-01-04 20:36:03

+0

这就是它被设置为FALSE的原因。如果设置为TRUE,它将不会下载任何在投票前仔细阅读的内容! – AlexV 2010-01-04 20:45:04

+0

好吧,你是对的。但是,'CURLOPT_NOBODY'的默认值是false,所以不需要设置它。此外,你应该解释你的答案 - 我甚至必须在阅读该评论之前向右滚动你的代码。 – Wim 2010-01-04 20:51:21