GET Запрос на URL-адрес (для принятия условий) возвращает ту же страницу, что и тело ответа, но работает в POSTMAN

Есть страница, к которой мне нужно получить доступ после принятия Условий использования в моем поисковом роботе. Однако даже после использования URL-адреса в исходном коде:

'/auth/submitterms.do?randomNum=' + randomNum

возвращаемое тело ответа - та же страница условий и положений. Когда я делаю то же самое в Postman, он отлично работает и переводит меня к следующему

randomNum получается с помощью регулярного выражения из тела ответа. Я использовал cookieHandler API для обработки сеанса.

Фрагмент кода: Получить запрос на страницу условий и положений:

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);
    }

Регулярное выражение, используемое для получения 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();

Как этого добиться и почему один и тот же запрос работает с Postman по-разному?

Обновлено: Я использовал connection.setInstanceFollowRedirect (false); и смог получить код ответа 302. Теперь я вижу заголовок местоположения и переменную set-cookie. Однако я думаю, что api cookieHandler уже обрабатывает сеанс.

Теперь, когда я пытаюсь отправить запрос GET на новый URL из заголовка местоположения, я возвращаюсь на страницу условий.

Вы можете использовать Скрипач для мониторинга трафика при использовании почтальона, а не при использовании вашего кода. Это поможет понять разницу между двумя случаями. telerik.com/fiddler

Yoav Gur 29.11.2018 15:12

Есть ли разница между скрипачом и почтальоном? Из того, что я читал, они оба используются для тестирования (http) запросов.

Srikant Jayaraman 29.11.2018 15:46

Это правда. но у Fiddler есть еще одна функция, которой не хватает Postman, а именно запись всего трафика, выходящего с вашего компьютера. Итак, Fiddler может записывать и показывать вам, что отправляется через трюк, когда вы запускаете свое приложение, в то время как почтальон не может. Вроде wirehark, но гораздо более дружелюбный и читаемый.

Yoav Gur 29.11.2018 19:11

Хорошо, я использовал connection.setInstanceFollowRedirect (false); и смог получить код ответа 302. Я предполагаю, что Postman автоматически следует перенаправлениям, но даже сейчас в коде я возвращаюсь на страницу условий. Я отредактировал свой вопрос, чтобы описать его.

Srikant Jayaraman 30.11.2018 11:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
64
0

Другие вопросы по теме