2014-02-12 45 views
1

我一直在移植我的Android應用程序。我的代碼完好無損,但由於某種原因,JSoup似乎收到了錯誤的數據。我從工作的PC應用程序直接複製和粘貼,工作得很好。以下是一段代碼,我使用的PC和Android的JSoup在Android上的行爲與在PC上的行爲不同?

 String AllGamesURL = "http://www.nfl.com/standings?category=league&season=" + Stringyear + "-REG"; 
     String HomeGamesURL = "http://www.nfl.com/standings?category=league&season=" + Stringyear + "-REG&split=Home"; 
     String AwayGamesURL = "http://www.nfl.com/standings?category=league&season=" + Stringyear + "-REG&split=Road"; 
     String DivisionGamesURL = "http://www.nfl.com/standings?category=league&season=" + Stringyear + "-REG&split=Division"; 

     Document AllGames = Jsoup.connect(AllGamesURL).get(); 
     Document HomeGames = Jsoup.connect(HomeGamesURL).get(); 
     Document AwayGames = Jsoup.connect(AwayGamesURL).get(); 
     Document DivisionGames = Jsoup.connect(DivisionGamesURL).get(); 

     Elements AllGamesTeams = AllGames.select("table.data-table1 tr.tbdy1"); 
     Elements HomeGamesTeams = HomeGames.select("table.data-table1 tr.tbdy1"); 
     Elements AwayGamesTeams = AwayGames.select("table.data-table1 tr.tbdy1"); 
     Elements DivisionGamesTeams = DivisionGames.select("table.data-table1 tr.tbdy1"); 

     for (Element teamName : AllGamesTeams) { 
      if(teamName.select("td[align] > a[href]").text().trim().equals("")) { 
       team = teamName.select("td[align]").text().trim(); 
      } else { 
       team = teamName.select("td[align] > a[href]").text().trim(); 
      } 
      if(team.equals(currentSelectedTeam)) { 
       //Division = teamName.select("td:eq(2)").text().trim(); 
       wins = Integer.parseInt(teamName.select("td:eq(3)").text().trim()); 
       losses = Integer.parseInt(teamName.select("td:eq(4)").text().trim()); 
       ties = Integer.parseInt(teamName.select("td:eq(5)").text().trim()); 
       gamesPlayed = wins + losses + ties; 
       pointsFor = Integer.parseInt(teamName.select("td:eq(7)").text().trim()); 
       pointsAgainst = Integer.parseInt(teamName.select("td:eq(8)").text().trim()); 
       break; 
      } 
     } 

在PC版本,它得到了勝,負,等得很好,但在Android上,這是得到錯誤的數據。有任何想法嗎?

+1

什麼是「錯」的呢? – chrylis

+0

JSoup在PC版上獲取正確的數據,但在Android版本上獲取了錯誤的數據,即使讀取該網站的代碼是從PC版直接複製並粘貼的。 – user2581556

+0

你只是重申你的文章,並沒有回答我的問題。 – chrylis

回答

1

通行證在當您連接請求的網站而不是移動版本的桌面版本,例如特定的userAgent:

Document AllGames = Jsoup.connect(AllGamesURL) 
    .userAgent("Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36") 
    .get(); 

爲了證實,我也嘗試過同樣的事情,但在Android通過用戶代理,而是檢索不同的內容(這是默認情況下會發生在Android上的內容)。

你可以用我提供的代碼,或在這裏看到的用戶代理的列表:http://www.useragentstring.com/pages/useragentstring.php

+0

謝謝你!有效! – user2581556

相關問題