Java에서 HTMLunit 라이브러리를 사용하여 https://online.firstdata.de/esp/concardis/ 웹 페이지에 로그인하려고합니다. 이 페이지에는 두 개의 iframe 안에 양식이 포함되어 있습니다. 양식을 포함하는 iframe의 소스는 https://online.firstdata.de/login/postlogin/UserDispatcher 입니다. 양식이 제출되면 다음 페이지가 렌더링되기 전에 리디렉션 링크 중 하나가 위에서 언급 한 것과 동일한 링크입니다. 그래서 Java에서 사용할 때 무한 루프가 발생합니다. 그러나 원본 페이지의 기본 소스가/concardis로 끝나는 링크이기 때문에 브라우저에서 로그인이 발생하면 리디렉션 링크가이 링크와 같지 않으므로 무한 루프가 발생하지 않습니다. Java에서이 동일한 동작을 어떻게 시뮬레이트 할 수 있습니까? 여기 내 코드입니다 ....양식 제출 후 리디렉션 링크가 양식을 포함하는 것과 동일한 경우 HtmlUnit 무한 루프
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
try{
HtmlPage page1 = null;
HtmlPage page2 = null;
HtmlPage page3 = null;
HtmlPage page = webClient.getPage("https://online.firstdata.de/esp/concardis");
List<FrameWindow> frames = page.getFrames();
for (FrameWindow frame : frames) {
if (frame.getFrameElement().getNameAttribute().equals("application")) {
page1 = webClient.getPage(frame.getEnclosedPage().getUrl());
}
}
List<FrameWindow> frames1 = page1.getFrames();
for (FrameWindow frame : frames1) {
if (frame.getFrameElement().getNameAttribute().equals("content")) {
page2 = webClient.getPage(frame.getEnclosedPage().getUrl());
}
}
List<FrameWindow> frames2 = page2.getFrames();
for (FrameWindow frame : frames2) {
if (frame.getFrameElement().getId().equals("loginFrame")) {
page3 = webClient.getPage(frame.getFrameElement().getSrcAttribute());
}
}
HtmlForm form = page3.getFormByName("loginForm");
HtmlTextInput userName = form.getInputByName("j_username");
HtmlPasswordInput password = form.getInputByName("j_password");
userName.setValueAttribute("username");
password.setValueAttribute("password");
HtmlSubmitInput submit = form.getInputByName("Submit");
submit.click();
안녕하세요. 회신 해 주셔서 감사합니다. 문제를 다시 간단히 설명하고 싶습니다. https://online.firstdata.de/esp/concardis/ 페이지에는 두 개의 프레임이 포함 된 프레임 세트가 있습니다. 응용 프로그램이라는 프레임 중 하나에는 다른 프레임 세트가 있습니다. 이 프레임 셋에는 "Login.do"프레임이 있습니다. 이 프레임 안에는 id가 "loginFrame"이고 src가 "https://online.firstdata.de/login/postlogin/UserDispatcher"인 iframe이 있습니다. 본문의이 iframe에는 로그인 양식이 들어 있습니다. 로그인 양식에 액세스하려면이 모든 프레임에 액세스해야합니다. 마침내 submit.click 할 때. –
제출을 수행하는 페이지의 url에 https://online.firstdata.de/login/postlogin/UserDispatcher라는 URL이 있습니다. 버튼을 클릭 한 후 리다이렉트가 발생하고 리다이렉트 링크 중 하나가 https://online.firstdata.de/login/postlogin/UserDispatcher인데, 이는 infinte 루프를 만들고 자바에서는 스택 오버 플로우 오류가 발생한다. HTMLUnit은 사용자 이름과 비밀번호를 올바르게 확인할 수 있으므로 제대로 작동합니다. 그러나 로그인 양식을 제출 한 후 페이지를 리디렉션하면 양식을 제출 한 페이지와 동일한 URL을 갖게됩니다. https://sourceforge.net/p/htmlunit/bugs/367/ –
과 유사한 내용입니까? 제안 된 코드를 사용해 보셨습니까? – RBRi