Для моего приложения для Android мне нужно скачать файл с сайта, требующего входа в систему. Это не базовая аутентификация http, а эмуляция формы.
Будучи новичком в Android, я действительно не знаю, с чего начать, но в PHP это легко сделать с помощью cUrl:
// Set standard options
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "somecookiejar");
curl_setopt($ch, CURLOPT_COOKIEFILE, "somecookiefile");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Login
curl_setopt($ch, CURLOPT_URL, "https://example.com" );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=myusername&password=mypassword");
curl_exec($ch);
// Get the file
curl_setopt($ch, CURLOPT_URL, "http://example.com/files/myfile.mp3");
curl_setopt($ch, CURLOPT_POST, 0 );
writefile(curl_exec($ch), "myfile.mp3");
curl_close($ch);
Буду признателен за любую помощь в выполнении этого в Android.
Примечание: я упоминаю HttpURLConnection в теме, но другие предложения, конечно, приветствуются:)
Редактировать: я думаю, что я должен немного уточнить. В первом запросе к форме входа задаются имя пользователя и пароль. Сервер возвращает набор файлов cookie, которые затем передаются во второй запрос, где происходит фактическая загрузка файла. Код на самом деле является рабочим примером из PHP (хотя и анонимным), и моя конкретная проблема заключается в обработке файлов cookie между запросами. В cUrl все эти файлы cookie происходят автоматически.
Спасибо!