1
我試圖發送一個多curl請求到api以檢索數據。這個特定的api需要一個正確的JSESSIONID cookie傳遞到頭文件中才能正常工作。JSESSIONID PHP Curl請求
功能我使用的發送請求是:
function sendMultiRequest($data) {
// initialize array of curl handles
$curl_handles = array();
// returned data
$result = array();
// initialize multi handle
$multi_handle = curl_multi_init();
//$cookie = generateCookie();
$headers = array(
'Content-type: application/json',
'Cookie: JSESSIONID=39DDF47143F20CA952555027CD5F5EA2'
);
// loop through $data and create curl handles
// then add them to the multi-handle
foreach ($data as $key => $val) {
$curl_handles[$key] = curl_init();
curl_setopt($curl_handles[$key], CURLOPT_URL, $val);
curl_setopt($curl_handles[$key], CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_handles[$key], CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl_handles[$key], CURLOPT_COOKIESESSION, TRUE);
curl_multi_add_handle($multi_handle, $curl_handles[$key]);
}
// execute the handles
$running = null;
do {
curl_multi_exec($multi_handle, $running);
} while($running > 0);
// get content and remove handles
foreach($curl_handles as $key => $val) {
$result[$key] = json_decode(curl_multi_getcontent($val), TRUE);
curl_multi_remove_handle($multi_handle, $val);
}
// close curl_multi
curl_multi_close($multi_handle);
return $result;
}
我不認爲這是功能問題,因爲我的其他多請求工作。但是當我嘗試訪問api時,除非傳入正確的JSESSIONID,否則我不會獲取數據。
我知道這是因爲我目前使用高級REST客戶端谷歌瀏覽器擴展程序,當我使用擴展名傳遞的Cookie請求標題時,該功能起作用。但是,api憑證會過期,所以我需要編程創建並使用JSESSIONID。
據我所知,我必須使用捲曲選擇COOKIEJAR和COOKIE莫名其妙,但我不太確定,因爲我是新手。
這將如何幫助我創建一個名爲'JSESSIONID'的Cookie? – Karthik
@Karthik您不需要創建cookie,遠程服務器會根據您的第一次會話請求發送cookie。該cookie被存儲在cookie jar中,並會隨後的請求自動發送。 –
我正在使用的API的文檔說我必須在標題上提供JSESSIONID cookie。將創建CookieJar爲我做這個? – Karthik