Я пытаюсь использовать API Rapidshare для загрузки файла. Для этого мне нужно запросить их подпрограмму download
дважды. Однажды, чтобы получить соответствующий сервер загрузки для использования, а во-вторых, чтобы запросить повторную загрузку на сервере, которую дал мне первый запрос. Второй вызов – это то, что отправляет файл.
При первом вызове он возвращает заголовок с полем 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);
К сожалению, он, похоже, не следует за заголовком местоположения, потому что ничего не возвращается в $resp
. Если я поместил URL-адрес в свой браузер, он успешно выполнит заголовок местоположения и даст мне вывод вызова API, поэтому он должен быть чем-то неправильным с PHP или cURL.
Может ли кто-нибудь угадать, что это может быть? Я уже тридцать минут проделывал игру и понятия не имею.
Спасибо за любую помощь!
измените значение CURLOPT_HEADER на true.
curl_setopt($ch, CURLOPT_HEADER, 1);
Если я правильно прочитал документацию, это приведет к возврату heaader запрашиваемой страницы, в котором будет указана директива «Location», а при установке CURLOPT_FOLLOWLOCATION в true она должна следовать за этим перенаправлением и любыми другими с помощью директивы Location.