Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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
Android与桌面应用程序_Android_Jsoup - Fatal编程技术网

Android与桌面应用程序

Android与桌面应用程序,android,jsoup,Android,Jsoup,我不确定如何描述这个问题,但基本上,我使用JSoup解析一些html并提取文章文本。我使用的方法是: public static String getArticle(String articleLink) { Log.i("article link", articleLink); Document doc = null; try { doc = Jsoup.connect(articleLink).timeout(10000).get();

我不确定如何描述这个问题,但基本上,我使用JSoup解析一些html并提取文章文本。我使用的方法是:

    public static String getArticle(String articleLink) {
    Log.i("article link", articleLink);
    Document doc = null;
    try {
        doc = Jsoup.connect(articleLink).timeout(10000).get(); 
    } catch (IOException ioe) {
        return null;
    }
    Elements articleBody = doc.select("div.article-body");
    Element first = articleBody.first();
    return first.text();
}
当我取出这段代码,在Netbeans中创建一个示例程序,并将链接传递到页面时,它会很好地返回文章。但是,当我在android设备上运行它时,我会在“return first.text()”处得到一个空指针

我不知道怎么会这样。该应用程序已经发布并开始工作,但突然,它开始崩溃,让我相信网页的布局发生了变化,但我只是运行了独立程序,传递了相同的文章链接,它在我的计算机上运行良好,但我在安卓上得到了空指针。同样版本的jsoup,有什么想法吗

更新:doc变量的值为:

<!DOCTYPE html>
<html>
<head> 
<title>Redirecting...</title> 
<meta http-equiv="refresh"     content="0;url=http://m.ncataggies.com/mobile/ViewArticle.dbml?    atclid=205823481&amp;DB_MENU_ID=&amp;SPSID=&amp;SPID=&amp;DB_OEM_ID=24500" /> 
<meta name="ROBOTS" content="NOINDEX,NOFOLLOW" /> 
</head> 
<body>  
</body>
</html>

重定向。。。

所以确实发生了一些变化…

位于
ncatagies.com
的服务器正在检查请求中的用户代理标头,并向移动浏览器提供不同的页面。因为您没有指定用户代理,服务器会看到Android提供的默认代理,该代理将其标识为移动浏览器

在中,可以按如下方式设置用户代理:

String ua=“Mozilla”//我建议使用您当前的浏览器作为参考
doc=Jsoup.connect(url).userAgent(ua).timeout(10000.get();

您可以检查您当前的用户代理。

您要刮取的页面是什么?第68行是指“return first.text()”