我正在使用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")
答案 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();