GET Request для URL (чтобы принять условия) возвращает ту же страницу, что и тело ответа, но работает в POSTMAN - PullRequest
0 голосов
/ 29 ноября 2018

Существует страница, к которой мне нужно получить доступ после принятия Условий использования моего сканера.Однако даже после использования 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-адрес из заголовка местоположения, я возвращаюсь на страницу с условиями.

...