Htmlunit Войдите на страницу с перенаправлением - PullRequest
0 голосов
/ 11 января 2020

Я искал в Google, как войти на веб-страницу с htmlunit, но безуспешно, вот мой код, для информации, которую я использую htmlunit версия: 2.36 . URL-адрес, необходимый для аутентификации (с моей учетной записью):

https://sycm.aliexpress.com/api/public/categories?lang=en_US

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebResponse;
import com.gargoylesoftware.htmlunit.html.*;
import org.springframework.beans.factory.annotation.Value;

import java.io.IOException;

public class TestLogin {
static String categoriesUrl="https://sycm.aliexpress.com/api/public/categories?lang=en_US";
static String loginUrl="https://sycm.aliexpress.com/api/public/categories?lang=en_US";
static String loginForm= "login-form";
static String loginId="fm-login-id";
static String passwordId="fm-login-password";
static String btnSubmitId="fm-login-submit";
static String login="login";
static String password="pass";


public static void main(String[] args) {
    WebClient webClient = new WebClient(BrowserVersion.BEST_SUPPORTED);
    webClient.getOptions().setRedirectEnabled(true);
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.getOptions().setCssEnabled(false);
    webClient.getOptions().setUseInsecureSSL(true);
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
    webClient.getCookieManager().setCookiesEnabled(true);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    HtmlPage page1 = null;
    try {
        page1 = webClient.getPage(loginUrl);
        String htmlBody = page1.getWebResponse().getContentAsString();
        System.out.println(htmlBody);
    } catch (IOException e) {
        e.printStackTrace();
    }
    HtmlForm form = (HtmlForm) page1.getElementById(loginForm);
    HtmlTextInput textField = (HtmlTextInput) page1.getElementById(loginId);
    textField.setValueAttribute(login);
    HtmlPasswordInput textField2 = (HtmlPasswordInput) page1.getElementById(passwordId);
    textField2.setValueAttribute(password);
    //HtmlSubmitInput button = (HtmlSubmitInput) page1.getElementById(btnSubmitId);
    try {
        HtmlButton button = (HtmlButton) form.getButtonByName("");
        HtmlPage page2 = button.click();
        //HtmlPage page2 =button.getEnclosingForm().click();
        String htmlBody = page2.getWebResponse().getContentAsString();
        System.out.println(htmlBody);
        webClient.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Может ли кто-нибудь помочь, пожалуйста, я пробовал также jsoup, но ничего не работает. если в java есть какой-либо другой фреймворк, я могу его использовать.

...