HTTP-запрос не работает, настройка авторизации с помощью метода setRequestProperty - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь сделать запрос на получение в Java. Однако, когда я запускаю этот код,

URL urlForGetRequest = new URL("my_url");   
String readLine = null;
HttpURLConnection conection = (HttpURLConnection) urlForGetRequest.openConnection();
conection.setRequestMethod("GET");

String username = "user";
String password = "pass";

String basicAuth = Base64.getEncoder().encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8));
System.out.println(basicAuth);

conection.setRequestProperty("Authorization", "Basic "+basicAuth);

int responseCode = conection.getResponseCode();

System.out.println(responseCode);

Он всегда возвращает 403. Я могу ввести URL-адрес в адресную строку, и он возвращает то, что мне нужно. Аналогично, учетные данные верны. Мне не хватает setRequestProperty за пределами авторизации?

1 Ответ

1 голос
/ 14 февраля 2020

Я думаю, urlForGetRequest для вашего сайта и URL для входа в систему разные. Когда вы открываете сайт, это один URL, а когда вы нажимаете кнопку входа в систему, вы запрашиваете другой URL, это должен быть ваш urlForGetRequest.

Просто попробуйте войти в систему с помощью правильного жесткого кода для начала. И использовать метод POST. И тогда вы можете либо жестко закодировать этот URL в своем коде, либо проанализировать HTML ответ с помощью jsoup, селен может быть. Я честно не решал такие проблемы. Если вы можете контролировать код этого сайта, вы можете интегрировать некоторые другие параметры аутентификации (0Auth, токены). Я не разбираюсь в этом, может быть, кто-то может помочь вам с этим, это еще одна топика c

...