[英]How to set cookie in PHP cURL request
我正在嘗試與加拿大的房地產列表API(CREA)建立連接,並且根據文檔說明 :
成功的登錄響應標頭包括帶有X-SESSIONID值的Set-Cookie。 登錄后,此X-SessionID值需要與每個請求一起提交。
該服務提供了用於設置所有內容的示例API,但是每當我嘗試獲取X-SESSIONID值並將其設置為后續請求時,它似乎都無法正常工作,並且我在所有后續請求中都獲得401未經授權的標頭(即使我能夠成功獲取X-SessionID信息)。
這是我現在使用的代碼:
<?php
$ch = curl_init('http://sample.data.crea.ca/Login.svc/Login');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, 'CXLHfDVrziCfvwgCuL8nUahC:mFqMsCSPdnb5WO1gpEEtDCHH');
$xml = curl_exec($ch);
curl_close($ch);
echo '<pre>' . htmlspecialchars($xml) . '</pre>';
preg_match('|Set-Cookie: (X-SESSIONID=.*?);.*|', $xml, $match);
echo '<pre>';
print_r($match);
echo '</pre>';
$ch = curl_init('http://sample.data.crea.ca/Metadata.svc/GetMetadata?Type=METADATA-RESOURCE&Format=STANDARD-XML&ID=0');
curl_setopt($ch, CURLOPT_COOKIE, $match[1]);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml = curl_exec($ch);
curl_close($ch);
echo '<pre>' . htmlspecialchars($xml) . '</pre>';
因為這是一個免費提供給任何人的示例API,所以您可以按原樣運行上面的代碼,以查看出現的錯誤。
任何有關如何正確提交X-SessionID值的建議,都可以使我得到正確的身份驗證並提出后續請求。
謝謝。
做就是了:
curl_setopt($ch, CURLOPT_COOKIEJAR, '');
現在,curl將處理cookie。 您無需解析任何內容或手動設置它們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.