2014-03-19 49 views
1

随着curl从Linux的bash我可以下载一个网页,通过一些变量如何使用-data卷曲在PHP

curl --data "var1=val1&var2=val2&var3=&var4=val4&btnSubmit=btnName" https://<url> -o "<fileToSave>" 

我需要做的事情,但要获得该页面的完整HTML代码到同一个PHP变量。 我想这一点:

<?php $ch = curl_init(); 


$post_data = array (
    "var1" => "val1", 
    "var2" => "val2", 
    "var3" => "", 
    "var4" => "val4", 
    "btnSubmit" => "btnName" 
); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

$response = curl_exec($ch); 
?> 

的问题是,从庆典,我可以检索HTML页面和与此代码我$response值为空保存。

怎么了?

回答

1

使用http_build_query()$post_data,否则将卷曲承担基础上,Array数据类型POSTmultipart/form-data发布(这就是为什么它不为你工作)。

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); 

http_build_query()阵列成key1=value1&key2=value2具有自动urlencode()格式化字符串转换。

1

好像你正在连接到HTTPs URL。您应该启用此cURL参数。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
+1

谢谢!很棒! – ntrax