Существует страница, к которой мне нужно получить доступ после принятия Условий использования моего сканера.Однако даже после использования URL-адреса в исходном коде:
'/auth/submitterms.do?randomNum=' + randomNum
возвращаемое тело ответа содержит ту же страницу условий и положений.Когда я делаю то же самое в Почтальоне, он работает нормально и переводит меня к следующему:
randomNum
получается с помощью регулярных выражений из тела ответа.Для обработки сеанса я использовал API cookieHandler .
Фрагмент кода: GET-запрос к странице условий и положений:
connection = new URL(URL_NEXIS+"auth/ipmdelegate.do").openConnection();
res = connection.getInputStream();
try (Scanner scanner = new Scanner(res)){
response = scanner.useDelimiter("\\A").next();
System.out.println("Terms Page: \n"+response);
}
Regex, используемый для получения randomNum изОтвет:
Pattern pattern = Pattern.compile("randomNum=[0-9].[0-9]*");
Matcher matcher = pattern.matcher(response);
if (matcher.find()) {
System.out.println(matcher.group());
randomNum = matcher.group().split("=")[1];
System.out.println(randomNum.toString());
} else {
throw new IOException("Error: Could not accept terms and conditions.");
}
GET-запрос на URL, который ' принимает ' условия.
System.out.println(URL_NEXIS + "auth/submitterms.do?randomNum=" + randomNum);
redirect_page = URL_NEXIS + "auth/submitterms.do?randomNum=" + randomNum;
connection = new URL(redirect_page).openConnection();
connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
connection.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
connection.setRequestProperty("Connection","keep-alive");
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
res = connection.getInputStream();
Как этого добиться и почему один и тот же запрос ведет себя по-разномус почтальоном?
РЕДАКТИРОВАТЬ: я использовал connection.setInstanceFollowRedirect (false);и смог получить код ответа 302.Теперь я вижу заголовок местоположения и переменную set-cookie.Тем не менее, я думаю, что cookieHandler API уже обрабатывает сессию.
Теперь, когда я пытаюсь отправить запрос GET на новый URL-адрес из заголовка местоположения, я возвращаюсь на страницу с условиями.