2016-11-15 122 views
-1

誰能解釋如何登錄到使用JSoup這http://ecampus.smu.ac.kr/網站?的Android - Jsoup登錄網站

目前(徹底失敗了,我敢肯定,我錯了「軌道」上)我的代碼:

class Insert extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 
     try { 
      Connection.Response res = Jsoup.connect("https://ecampus.smu.ac.kr/login/index.php") 
        .data("username", "201490008", "password", "*******") 
        .method(Connection.Method.POST) 
        .execute(); 
      Map<String, String> loginCookies = res.cookies(); 
      Document doc = Jsoup.connect("http://ecampus.smu.ac.kr/").cookies(loginCookies).get(); 
      Elements elements = doc.select(".course_name"); 
      arrayList.clear(); 
      for (Element element : elements) { 
       arrayList.add(element.text()); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
+0

你怎麼知道該網站接受POST請求呢? –

+0

我不知道,我想是@ cricket_007 –

+0

這個環節是我們univecity的鏈接,我想我的應用程序連接到這個鏈接。 2天前,此代碼已工作,但今天它不工作。 @ cricket_007 –

回答

1

嘗試使用像這樣通過Jsoup發送POST請求並檢索文檔

首先:設置一個cookie管理器來處理所有的cookie的東西

CookieManager cm = new CookieManager(); 
CookieManager.setDefault(cm); 

二:爲您的POST參數

0123一
HashMap<String, String> postMap = new HashMap<String, String>(); 
postMap.put("username", "xxxxxxxxxxx"); 
postMap.put("password", "xxxxxxxxxxxxx"); 
postMap.put("rememberusername", "on"); 

最後:設定特定的頭文件(在我的例子中,引用者和的userAgent)執行POST請求

String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"; 
String referer = "http://ecampus.smu.ac.kr/"; 
Connection.Response res = Jsoup.connect("https://ecampus.smu.ac.kr/login/index.php") 
     .data(postMap) 
     .userAgent(userAgent) 
     .referrer(referer) 
     .method(Connection.Method.POST) 
     .execute(); 

Document doc = res.parse(); 

用戶代理將會使服務器認爲它不是一個移動設備。這應該工作。

+0

啊,但它不工作@ devnull69 –