Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSoup在Android上的行为与在PC上的不同?_Java_Android_Jsoup - Fatal编程技术网

Java JSoup在Android上的行为与在PC上的不同?

Java JSoup在Android上的行为与在PC上的不同?,java,android,jsoup,Java,Android,Jsoup,我一直在将我制作的PC应用程序移植到Android上。我已经将代码安装好并运行得很好,但是由于某种原因,JSoup似乎获取了错误的数据。我做了一个直接复制和粘贴从工作PC应用程序,它的工作刚刚好。这是我在个人电脑和安卓系统中使用的一段代码 String AllGamesURL = "http://www.nfl.com/standings?category=league&season=" + Stringyear + "-REG"; String Home

我一直在将我制作的PC应用程序移植到Android上。我已经将代码安装好并运行得很好,但是由于某种原因,JSoup似乎获取了错误的数据。我做了一个直接复制和粘贴从工作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上,它获取的数据是错误的。有什么想法吗?

当您连接请求站点的桌面版本而不是移动版本时,请传入特定的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上发生的事情)


您可以使用我提供的代码,或者在此处查看用户代理列表:

它的“错误”是什么?JSoup在PC版本上获得正确的数据,但是在Android版本上获取了错误的数据,即使读取网站的代码是从PC版本直接复制粘贴的。你只是重述了你的帖子,没有回答我的问题。胡乱猜测,因为你显然没有尝试调试这个,但是你正在做非常详细的屏幕抓取:也许你得到的是一个不同结构的移动版本的网站。对不起,我想我不明白你的问题。如果你问它具体是做什么的,应该代表胜负的整数显示为0,它们显示为PC版本中的实际数字,没有任何问题。谢谢!成功了!