2013-11-14 6 views
0

iam пытается получить некоторые данные с страницы .aspx. Что я хочу сделать, так это сообщить серверу, что я хочу иметь определенное значение из раскрывающегося меню со страницы. Если я не ошибаюсь, вы можете сделать это, изменив это значение: «ctl00 $ holder $ ddlEntry». Когда вы являетесь обычным пользователем, вы хотите нажать кнопку обновления. Поскольку javascript не реализован в jsoup, я пытался получить данные, сделав тот же пост-запрос, что и кнопка обновления. Что я делаю не так?POST-запрос .aspx page

изменить: что моя проблема: моя страница не обновляется, iam все еще получает ту же страницу.

public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 
    String url = "http://extranet.net4gas.cz/capacity_ee_point.aspx"; 

    Document doc = Jsoup.connect(url).get(); 

    Elements viewState = doc.select("input[name=__VIEWSTATE"); 
    Elements eventValidation = doc.select("input[name=__EVENTVALIDATION]"); 

    Map<String,String> allFields = new HashMap<String,String>(); 
    allFields.put("ctl00$holder$ScriptManager1", "ctl00$holder$UpPanel"); 
    allFields.put("ctl00$holder$break", "rbTypC1"); 
    allFields.put("ctl00$holder$enex", "rbTypB1"); 
    allFields.put("ctl00$holder$ddlEntry", "4"); //resembles value in dropdown menu 
    allFields.put("ctl00$holder$ddlMonth1", "11"); 
    allFields.put("ctl00$holder$ddlYear1", "2013"); 
    allFields.put("ctl00$holder$ddlMonth2", "12"); 
    allFields.put("ctl00$holder$ddlYear2", "2018"); 
    allFields.put("__EVENTTARGET", ""); 
    allFields.put("__EVENTARGUMENT", ""); 
    allFields.put("__LASTFOCUS", ""); 
    allFields.put("__VIEWSTATE", viewState.val()); 
    allFields.put("__EVENTVALIDATION", eventValidation.val()); 
    allFields.put("__ASYNCPOST", "true"); 
    allFields.put("ctl00$holder$bRefresh", " Refresh "); 

    System.out.println(allFields); 

    Connection.Response res = Jsoup.connect(url) 
      .data(allFields) 
      .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0") 
      .timeout(5*1000) 
      .method(Method.POST). 
      execute(); 

    Document doc2 = Jsoup.connect(url) 
      .cookies(res.cookies()) 
      .timeout(5*1000) 
      .get(); 

    System.out.println(doc2.html()); 

} 

ответ

0

В этом случае вы можете использовать Selenium Libary для Java. Он эмулирует определенный браузер и может нажимать кнопки и т. Д.

+0

iam пытается избежать библиотек, таких как selenium или htmlunit, потому что они выглядят как излишества для того, что я делаю. Разве нет обходного пути в jsoup? – maxw