2013-04-19 7 views
4

Я пытаюсь войти в этот сайт: http://deeproute.comИспользование Jsoup для POST данные для входа в

Это мой код.

  Connection.Response res = null; 
      Connection homeConnection = null; 
      Document homePage = null; 
      Map<String, String> loginCookies = null; 
      try { 
       res = Jsoup.connect("http://www.deeproute.com/") 
         .data("cookieexists", "false") 
         .data("name", user) 
         .data("password", pswd).method(Method.POST) 
         .execute(); 

      } catch (IOException e) { 

       e.printStackTrace(); 
      } 

      if (res != null) { 

       loginCookies = res.cookies(); 

       try { 
        homePage = Jsoup.connect("http://www.deeproute.com") 
          .cookies(loginCookies).get(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

К сожалению, это просто возвращает ту же страницу в состоянии без регистрации. Что я делаю не так?

+1

Вы по сравнению сетевой запрос/ответ для обоих случаев (с использованием веб-браузера и с использованием вашего кода)? –

+0

Как мне это сделать, и на что я должен искать? – user1945153

+0

Пожалуйста, отметьте ответы, если вы хотите помочь в будущем. – MariuszS

ответ

4

Вам необходимо прочитать форму перед публикацией! Вам не хватает параметра subbera = Login.


public static void main(String[] args) throws Exception { 

    Connection.Response loginForm = Jsoup.connect("http://deeproute.com/deeproute/default.asp") 
      .method(Connection.Method.GET) 
      .execute(); 

    Document document = Jsoup.connect("http://deeproute.com/deeproute/default.asp") 
      .data("cookieexists", "false") 
      .data("name", "username") 
      .data("password", "pass") 
      .data("subbera", "Login") 
      .cookies(loginForm.cookies()) 
      .post(); 

} 
+0

Мне не хватало поле 'subbera' и часть'/deeproute/default.asp/'URL-адреса. Спасибо за вашу помощь! – user1945153

0

Может быть несколько (много на самом деле) месяцев слишком поздно, но я обнаружил, что я должен был сделать некоторые веб-слом, где сайт был создан действительно заблуждение (сайт я, необходимый для извлечения данных из). Также нужно было сначала войти в систему, чтобы получить информацию о файлах cookie. @ Ответ MariuszS был полезен, но единственная проблема заключалась в том, что я не был уверен, какими должны были быть ожидаемые пары Map/Key-Value-Pair. Благодаря Javascript я быстро получил ключи и значения формы и смог успешно войти в систему. Вот Javascript:

var str = ""; 

//the form selector i.e. 
//that which is to be submitted to. In 
//my case, i needed to submit the entire body 
var arr = $("input[name]"); 

for(var i = 0, l = arr.length; i<l; i++){ 
str+= '.data("'+ arr[i].name +'", "'+ arr[i].value +'")' 
} 

Append значения «ул» по вашему запросу Jsoup перед тем

.method(Connection.Method.GET) 
.execute(); 

Надеется, что это, оказывается, коим-что полезно, как это было для меня :)

Смежные вопросы