Я сделал две версии скрипта, который отправляет форму веб-страницы (https) и собирает результаты. Одна версия использует Snoopy.class в php, а другая использует urllib и urllib2 в python. Теперь я хотел бы сделать версию Java.
Snoopy делает версию php чрезвычайно простой для написания, и она отлично работает на моей собственной (OS X) машине. Но он выделил слишком много памяти и был убит в тот же момент (во время выполнения curl) при запуске на веб-хостинге pair.com. Отлично работает на сервисе хостинга dreamhost.com.
Поэтому я решил попробовать версию на python, пока я смотрел, что может вызвать проблемы с памятью, а urllib и urllib2 сделали это очень легко. Сценарий работает нормально. Получает около 70000 записей базы данных, используя несколько сотен отправленных форм, сохраняя в файл размером около 10 МБ за 7 минут.
Глядя на то, как сделать это с Java, я чувствую, что это будет не то же самое прогулка в парке, как это было с PHP и Python. Разве подача формы в java не для простых смертных?
Я провел большую часть дня, пытаясь понять, как настроить Apache HttpClient. То есть, прежде чем я сдался. Если мне понадобится больше, чем несколько дней, чтобы разобраться с этим, то, я полагаю, это будет предметом другого вопроса.
HttpClient innov.ch не поддерживает https.
И, похоже, WebClient у меня уйдет как минимум несколько дней, чтобы выяснить.
Итак, версии php и python были на одном дыхании. Можно ли сделать Java-версию в несколько простых строк? Если нет, я оставлю это на более поздний день, так как я только новичок. Если да, то может ли какая-нибудь добрая душа указать мне на свет?
Спасибо.
Для сравнения, основные строки кода из двух версий:
Python версия
import urllib
import urllib2
submitVars['firstName'] = "John"
submitVars['lastName'] = "Doe"
submitUrl = "https URL of form action goes here"
referer = "URL of referring web page goes here"
submitVarsUrlencoded = urllib.urlencode(submitVars)
req = urllib2.Request(submitUrl, submitVarsUrlencoded)
req.add_header('Referer', referer)
response = urllib2.urlopen(req)
thePage = response.read()
php версия
require('Snoopy.class.php');
$snoopy = new Snoopy;
$submit_vars["first_name"] = "John";
$submit_vars["last_name"] = "Doe";
$submit_url = "https URL of form action goes here";
$snoopy->referer = "URL of referring web page goes here";
$snoopy->submit($submit_url,$submit_vars);
$the_page = $snoopy->results;