2011-05-26 74 views
1

我試圖使用Rapidshare的API下載文件。爲此,我需要兩次請求它們的download子例程。一旦獲得適當的下載服務器使用,然後再次請求第一次請求給我的服務器上的下載。第二個調用是發送文件的內容。cURL不遵循以下位置:標題

在第一次調用時,它會返回一個包含Location: blah字段的標頭,並且需要關注此位置。所以我這樣做:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=download&fileid=$file_id&filename=$file_name&try=1&login={$account['username']}&password={$account['password']}"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
$resp = curl_exec($ch); 
curl_close($ch); 

不幸的是,它似乎並沒有成爲繼Location頭,因爲沒有什麼是$resp返回。如果我將URL放入瀏覽器中,它會成功跟蹤位置標題,並向我提供API調用的輸出,所以它必須是PHP或cURL的錯誤。

任何人都可能冒險猜測它可能是什麼?我現在擺弄了30分鐘的時間,不知道。

感謝您的幫助!

+0

您的PHP處於安全模式嗎? http://www.edmondscommerce.co.uk/curl/php-curl-curlopt_followlocation-and-open_basedir-or-safe-mode/ – 2011-05-26 18:15:03

+0

嘗試啓用CURLOPT_HEADER,以便響應的標題包含在'$ resp'中。如果RS使用的是javascript/meta重定向而不是基於頭部的,curl將不會採用這種方式,您必須手動解析。 – 2011-05-26 18:21:34

+0

您是否嘗試訪問生成的網址? – Gerep 2011-05-26 18:21:13

回答

1

將CURLOPT_HEADER更改爲true。

curl_setopt($ch, CURLOPT_HEADER, 1); 

如果我讀過的文檔的權利,這將返回所請求的頁面的heaader,與包含「位置」指令,並且通過具有CURLOPT_FOLLOWLOCATION設置爲true,它應該遵循重定向,並通過其他任何位置指令。