Вызов API, работающий в Postman, не работает в Java, проблема заключается в перенаправлениях.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Вызов API, работающий в Postman, не работает в Java, проблема заключается в перенаправлениях.

Сообщение Anonymous »

У меня есть 2 вызова API, они были протестированы и отлично работают с использованием почтальона. Я использовал sessionToken, полученный из первого вызова в Java, и использовал его в почтальоне для выполнения второго вызова API, и это работает.
1st извлекает sessionToken, который передается второму вызову как параметр.
Второй вызов имеет перенаправления, но должен закончиться на странице, где я могу получить ответ SAML.
Ниже приведен код, и я считаю, что проблема в том, как Java обрабатывает параметр. перенаправления (единственное, что я могу придумать), но я не знаю, как решить проблему. (PS Я также попробовал пару других Java-библиотек HTTP с той же проблемой)
Есть идеи о том, что я здесь делаю неправильно?

Код: Выделить всё

        client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL)
.build();

ApiURL = "https://company.okta.com/api/v1/authn";
jsonBody = new JSONObject("{\"username\": \"" + userNameString + "\",\"password\": \"" + userPasswordString + "\",\"options\": {\"multiOptionalFactorEnroll\": false,\"warnBeforePasswordExpired\": false}}");

request = HttpRequest.newBuilder()
.uri(URI.create(ApiURL))
.header("accept", "*/*")
.header("content-type", "application/json")
.method("POST", BodyPublishers.ofString(jsonBody.toString()))
.build();

response = client.send(request, BodyHandlers.ofString());

String cookieHeader = "";
if (response.statusCode() == 200) {
jsonBody = new JSONObject(response.body());
sessionToken = jsonBody.getString("sessionToken");
}

ApiURL = "https://company.okta.com/home/company_application_1/0oa2v2ll39RRbl5ae1t7/aln2v2sgr83LTglE71t7";
fullUrl = String.format("%s?sessionToken=%s", ApiURL, sessionToken);

request = HttpRequest.newBuilder()
.uri(URI.create(fullUrl))
.header("accept", "*/*")
.method("POST", BodyPublishers.noBody())
.build();

response = client.send(request, BodyHandlers.ofString());
Я ожидаю, что меня отправят на целевую страницу приложения, где я смогу получить значение SAMLResponse. Но вместо этого меня отправляет на экран входа в okta.
Это отлично работает в почтальоне.
Я пытался вручную кодировать перенаправления с помощью те же результаты (происходит 2 перенаправления)
Я попробовал пару других http-библиотек Java с той же проблемой
Я считаю, что проблема это то, как Java обрабатывает перенаправления (единственное, что я могу придумать), но я не знаю, как решить эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/783 ... the-proble
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»