LINUX.ORG.RU

HtmlUnit: error — cannot be cast to...

 ,


0

1

Есть код авторизации, отправкой поста с X-CSRF-Token:

public class testpost {
static HtmlPage resultpage;
public static void testsite (WebClient webClient) throws IOException {
WebRequest requestSettings = new WebRequest(new URL("http://trolls.ru/in"), HttpMethod.POST);
ArrayList<NameValuePair> requestParameters = new  ArrayList<NameValuePair>();
requestParameters.add(new NameValuePair("login","troll"));
requestParameters.add(new NameValuePair("pass","123"));
requestSettings.setRequestParameters(requestParameters);
requestSettings.setAdditionalHeader("X-CSRF-Token", "Fetch");
resultpage = webClient.getPage(requestSettings);
}

public static void main(String[] args) throws Exception {
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
testsite(webClient);
System.out.println(resultpage.asXml());
webClient.closeAllWindows();
}
}

Но при попытке авторизации, вываливается ошибка:
Exception in thread "main" java.lang.ClassCastException: com.gargoylesoftware.htmlunit.UnexpectedPage cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlPage
	at testpost.testsite(testpost.java:75)
	at testpost.main(testpost.java:88)

В чем накосячил, как можно поправить?



Последнее исправление: makeB (всего исправлений: 1)
static HtmlPage resultpage;

Должен быть родительский для всех HtmlPage класс, т.к. ты не знаешь, что получишь после запроса.

Adonai ★★★
()
Последнее исправление: Adonai (всего исправлений: 1)
Ответ на: комментарий от Adonai

Переписал так, но ошибка осталась:

public class testpost {
public static void main(String[] args) throws Exception {
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());

WebRequest requestSettings = new WebRequest(new URL("http://trolls.ru/in"), HttpMethod.POST);
ArrayList<NameValuePair> requestParameters = new  ArrayList<NameValuePair>();
requestParameters.add(new NameValuePair("login","troll"));
requestParameters.add(new NameValuePair("pass","123"));
requestSettings.setRequestParameters(requestParameters);
requestSettings.setAdditionalHeader("X-CSRF-Token", "Fetch");
HtmlPage resultpage = webClient.getPage(requestSettings);

System.out.println(resultpage.asXml());
webClient.closeAllWindows();
}
}

makeB
() автор топика
Ответ на: комментарий от makeB
HtmlPage resultpage = webClient.getPage(requestSettings);

Да возьми же родительский класс! Тебе не HtmlPage возвращается, а другой потомок его родительского класса, UnexpectedPage.

public <P extends Page> P getPage(String url)
Page используй, а не HtmlPage.

Adonai ★★★
()
Последнее исправление: Adonai (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.