2016-07-15 5 views
1

소스에서 모든 입력 태그 필드 이름을 사용하고 연결하기 위해 jSoup를 사용하여 가능한 모든 방법을 시도했지만 log.e에 출력 HTML 페이지가 나타날 때마다 같은 로그인 페이지. 당신은 거의 다홈 페이지 대신에 로그인 페이지를 반환하는 안드로이드의 jsoup를 사용하여 로그인

protected Void doInBackground(Void... params) { 
    try { 

    Connection.Response loginForm = Jsoup.connect("http://adsl.yemen.net.ye/en/login.aspx") 
       // .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 
       .method(Connection.Method.GET) 
       .execute(); 
     loginForm= Jsoup.connect("http://adsl.yemen.net.ye/en/login.aspx") 
       .data("ctl00$ContentPlaceHolder1$loginframe$UserName", "MASALAHI2010") 
       .data("ctl00$ContentPlaceHolder1$loginframe$Password", "MAMAM") 
       // .data("ctl00$ContentPlaceHolder1$loginframe$RememberMe","true") 
       .data("ctl00$ContentPlaceHolder1$loginframe$LoginButton", "Sign In") 
       .data("__LASTFOCUS", "") 
       .data("__EVENTTARGET", "") 
       .data("__EVENTARGUMENT","") 
       .data("__VIEWSTATE","/wEPDwULLTE4NzkxODYxNTIPZBYCZg9kFgICAw9kFgQCAQ9kFgQCAw8PFgIeB1Zpc2libGVoZGQCBQ8PFgIfAGhkZAIDD2QWCAIBDzwrAAoBAA8WAh4IVXNlck5hbWUFDE1BU0FMQUhJMjAxMGQWAmYPZBYEAgMPDxYGHghSZWFkT25seWceBFRleHQFDE1BU0FMQUhJMjAxMB4HRW5hYmxlZGhkZAIPDxAPFgIeB0NoZWNrZWRoZGRkZAIFDw8WAh8AaGRkAgcPDxYCHwBoZGQCCQ8PFgIfAGhkFgICBQ8PFgIfBGhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUvY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyMSRsb2dpbmZyYW1lJFJlbWVtYmVyTWU9Ui0fNjQuNhCWW2dC7yFhNqTbNcJm7Q+EVewP9rv8Yg==") 
       .data("__VIEWSTATEGENERATOR","EE376E4E") 
       .data("__EVENTVALIDATION","/wEWBQKP+oCbCALfq6j2AQKR/OC4DgKj1+LbCwLs5ZY/pEGu3qyHck5jsPKXcvY2hzZwLeCSbXeQ4TprZKrhv7E=") 
       .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36") 
       .cookies(loginForm.cookies()) 



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

     Document homePage = Jsoup.connect("http://adsl.yemen.net.ye/en/user_main.aspx") 
       .cookies(loginForm.cookies()) 
       .get(); 




     Log.e("test", homePage.html()); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

답변

1

, 단지 몇 가지 사소한 것들 : 당신은 사용자 이름과 암호 (예를 들어 __VIEWSTATE, __EVENTVALIDATION 등) 이외 보낼 필요가 로그인 폼 데이터를 볼

? 그들은 동적으로 검색해야합니다. 처음 로그인 양식 페이지로 이동하면 고유 한 값으로 전송됩니다.

POST 고정 값 대신 첫 번째 로그인 양식에서 쿠키를 설정 한 것처럼 처음받은 loginForm의 구문을 분석해야합니다.

자세한 내용은 Jsoup here을 사용하여 웹 사이트에 로그인하는 방법에 대한 포괄적 인 자습서를 작성 했으므로 많은 도움이 될 것으로 믿습니다.

+0

나는 당신이 나에게 보낸 비슷한 튜토리얼을 따라왔다. 당신은 plz 설명 할 수 동적으로 tou 그 진위 토큰을 검색하는 방법을 의미합니까? 그렇다면 그 검색 구문에서 #login 와트? –

+0

동적 속성 값도 시도했지만 동일한 로그인 페이지를 반환합니다. –

0

Jsoup.connect (URL) .method (Method.GET) .followRedirects (false)를 // <이 - 트릭 .cookie (SESSION_KEY, sessionId가) .Execute를했다();

관련 문제