我使用cURL建立了一个成功的连接,但是我试图下载一个文件并且它无法正常工作。我知道这是cookie,因为当我打开下载的文件时,它包含一个授权的必需消息。初始身份验证正在运行。任何想法
// Create a curl handle to a non-existing location
$ch = curl_init('https://xxxx/');
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);
// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'user=xxx&password=xxx');
// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$fp = fopen("status.xml", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors';
}
curl_close($ch);
fclose($fp);
答案 0 :(得分:1)
CURLOPT_COOKIEFILE
用于阅读Cookie,CURLOPT_COOKIEJAR
用于撰写。
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');
确保您拥有Cookie文件的完整路径,并且有权写入
答案 1 :(得分:1)
Cookie句柄信息只需在句柄关闭后保存到文件中,就像在手册中说的那样:
CURLOPT_COOKIEJAR =>用于在句柄关闭时保存所有内部cookie的文件名,例如在致电curl_close之后。
Manual: curl_setopt 此外,您可能需要考虑到这一点:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);