cURL не следует заголовку Location: - PullRequest
1 голос
/ 26 мая 2011

Я пытаюсь использовать 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.

Может ли кто-нибудь рискнуть догадаться, что это может быть? Я возился уже 30 минут и понятия не имею.

Спасибо за любую помощь!

1 Ответ

1 голос
/ 06 апреля 2013

изменить CURLOPT_HEADER на true.

curl_setopt($ch, CURLOPT_HEADER, 1);

Если я правильно прочитал документацию, он вернет заголовок запрашиваемой страницы, содержащий директиву «Местоположение», и, если для CURLOPT_FOLLOWLOCATION установлено значение true, он должен следовать за этим перенаправлением и всеми остальными.через директиву Location.

...