2016-12-09 1 views
0

현재 뉴스 웹 사이트에 로그인해야하는 응용 프로그램을 만들고 있지만 어떤 이유로 인해 경고 메시지가 표시되고 동시에 웹 사이트에 로그인하지 못합니다.Jsoup 로그인 실패 - 시스템 오류 메시지

뉴스 웹 사이트 : http://www.malaysiakini.com/

뉴스 웹 사이트의 HTML 양식 : News website form

내 소스 코드 :

private void login(String username, String password){ 


    try { 

     Connection.Response response = Jsoup.connect("http://www.malaysiakini.com/") 
       .data("username", "username", "password", "password", "action","//login2.mkini.net/v2/login-exchange") 
       .method(Connection.Method.GET) 
       .execute(); 

     String cookie = response.cookie("JSESSIONID"); 



     Document document = Jsoup.connect("http://www.malaysiakini.com/") 
       .cookie("JSESSIONID", cookie) 
       .get(); 

     Elements loginData = document.select("logindata"); 


     if(!loginData.isEmpty()){ 
      Log.d("Login Data "," Fail : " + loginData); 
     } 

     else 
      Log.d("Login Data "," Success : " + loginData); 


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

} 

경고 :

W/System.err: org.jsoup.HttpStatusException: HTTP error fetching URL. Status=405, URL=http://www.malaysiakini.com/ 
W/System.err:  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:590) 
W/System.err:  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) 
W/System.err:  at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) 
W/System.err:  at com.example.azrie.VoiceTheNews.BackgroundProcessLogin.login(BackgroundProcessLogin.java:60) 
W/System.err:  at com.example.azrie.VoiceTheNews.BackgroundProcessLogin.doInBackground(BackgroundProcessLogin.java:41) 
W/System.err:  at com.example.azrie.VoiceTheNews.BackgroundProcessLogin.doInBackground(BackgroundProcessLogin.java:20) 
W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
W/System.err:  at java.lang.Thread.run(Thread.java:841) 

편집

나는 GETPOST에서 방법을 변경하고 또한 네트워크를 살펴하지만 여전히 난에 내가 때문에 나에게 올바른 궤도에있어 여부는 아주 새로운, 대한 아무 생각이보고되지있어 무슨 생각이 없다 이. 내가보기 위해 몇 가지 스크린 샷을 포함 시켰습니다.

enter image description here

enter image description here

+0

매니페스트 파일에 모든 적절한 권한이 있습니까? –

+0

답장을 보내 주셔서 감사합니다. 지금까지 내 매니페스트에서'READ_EXTERNAL_STORAGE','WRITE_EXTERNAL_STORAGE' 및'INTERNET'을 가지고 있습니다. 내가 놓친 게 있니? –

+0

당신은 아무것도 놓치지 않았습니다. 귀하의 요청에 405 오류가 발생했습니다. 귀하의 요청 설정을 점검하고 그런 식으로 로그를 수행 할 수 있는지 확인하는 것이 좋습니다 ... –

답변

1

먼저 당신이 쿠키를 얻기 위해 사이트에 GET 요청을 보낼 수 있습니다. 나중에 필요한 쿠키는 _cfduid 쿠키입니다. 다음으로는 POST 두 번째 URL에 대한 요청을 보내야합니다 - 당신이 여기에서 볼 수 있듯이, _cfduid과 다른 값으로 http://login2.mkini.net/v2/login-exchange을 :
POST PARAMETERS

의 URL, 쿠키, 매개 변수를 얻으려면 그래서, 당신이 사용할 수 있습니다 브라우저의 개발자 도구를 사용하고 브라우저와 서버 사이의 트래픽을 모니터링합니다.
Android 태그로 질문에 태그를 추가 했으므로 브라우저의 user-agent 문자열을 변경하는 도구를 사용하는 것이 좋습니다. 사이트에서 모바일 용으로 다른 방식으로 응답 할 수 있기 때문입니다.

+0

지도를 제공해 주셔서 감사 드리며 작동합니다. –