当存在绝对链接时,Jsoup connect无法正常工作?

时间:2018-05-31 23:14:44

标签: android html parsing jsoup href

我正在使用Jsoup从网站获取HTML。例如,我的HTML页面中的链接如下所示:

String url="http://kitchen.sayidaty.net/node/8544/كوكيزبالشوفان/حلويات";
Document doc=Jsoup.connect(url).get();

此链接解析NOTHING并抛出IOException,但是当我在浏览器中手动打开此链接并将其恢复到我的代码时,它会被更改并且工作正常!像这样:

String url="http://kitchen.sayidaty.net/node/8544/%D9%83%D98%B2-%D8%A7%D9%86/%D8%AD%D9%84%D9%88%D9%8A%D8%A7%D8%AA#ingredients";
Document doc=Jsoup.connect(url).get();

有没有办法获得绝对链接(第二个),我尝试了同样的结果:'(

link.attr("abs:href") 

1 个答案:

答案 0 :(得分:1)

当您执行POST和GET等事务时,您遇到的问题与charset规范http协议句柄有关。您必须使用application/x-www-form-urlencoded MIME格式(有关HTML表单编码的详细信息,请参阅HTML specification)。

在您的情况下,要使其工作,您必须使用Android URLencoder,但仅限于您要使用的地址的末尾,以避免出现问题。所以变换:

String url="http://kitchen.sayidaty.net/node/8544/كوكيزبالشوفان/حلويات";

分为:

String auxUrl= URLEncoder.encode("كوكيزبالشوفان/حلويات", "utf-8");
String url="http://kitchen.sayidaty.net/node/8544/" + auxUrl;

然后继续你的

Document doc=Jsoup.connect(url).get();