본문 바로가기
Android 기법/# Study

[Android/안드로이드]Jsoup을 이용하여 WebView 로그인 쿠키 이용하기[Login/Cookie]

by 퍼즐잎 2017. 2. 3.

Jsoup 라이브러리는 dependencies에 

다음을 추가하면 사용이 가능하다.


compile 'org.jsoup:jsoup:1.10.2'




Jsoup은 웹 페이지의 Html을 파싱 하는데 유용한 라이브러리인데


로그인과 같이 인증이 필요한 페이지에 접근해서


값을 가지고 오는 경우 특별한 처리가 필요하다.





구글링을 해본 결과


Jsoup에서

1
2
3
4
5
Connection.Response re = Jsoup.connect("로그인 페이지")
                        .data("UserID""MyID")
                        .data("UserPW","MyPW")
                        .execute();
                        
cs



다음과 같이 웹 페이지에서 인증을 받아

Html 파싱이 가능하다고 하는데



되는 페이지가 있고 안되는 페이지가 있는 것 같다.




그래서 사용한 다른 방법은

웹뷰를 통해서 로그인시 쿠키값을 얻고



이 쿠키값을 이용하여 

Jsoup에서 파싱을 하는 방법이다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        ...
 
        myWebView = (WebView) findViewById(R.id.webview);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.setWebViewClient(new WebViewClient());
        myWebView.loadUrl("로그인 URL");
        url = myWebView.getUrl();
 
        CookieManager cookieManager = CookieManager.getInstance();
        cookies = cookieManager.getCookie(url);

 
        ...
            
    }
 
 
    ...
 
 
        Connection.Response re = Jsoup.connect("로그인 이후 접근가능 URL")
                  .header("Cookie", cookies)//쿠키값 전달
                  .execute();
 
 
    ...

cs





CooKieManager를 통해 

WebView에서 Cookie 값을 가지고온다. 



그리고 Jsoup에서

.header("Cookie",쿠키); 를 통해 



Jsoup에서 로그인 유지가 가능해진다.



그 후 인증이 되어야 접근이 가능한 페이지에서

Html 파싱이 가능하다.




댓글