gpt4 book ai didi

java - 给 Jsoup 一个 url,重定向是一个带空格的 url 会导致错误。这个怎么解决?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:21 31 4
gpt4 key购买 nike

你好,我必须解析 URI 由服务器重定向解析的页面。

例子:

我有http://www.juventus.com/wps/poc?uri=wcm:oid:91da6dbb-4089-49c0-a1df-3a56671b7020重定向的是 http://www.juventus.com/wps/wcm/connect/JUVECOM-IT/news/primavera%20convocati%20villar%20news%2010agosto2013?pragma=no-cache

这是我必须解析的页面的 URI。问题是重定向 URI 包含空格,这是代码。

    String url = "http://www.juventus.com/wps/poc?uri=wcm:oid:91da6dbb-4089-49c0-a1df-3a56671b7020";
Document doc = Jsoup.connect(url).get();

Element img = doc.select(".juveShareImage").first();
String imgurl = img.absUrl("src");
System.out.println(imgurl);

我在第二行收到这个错误:

    Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=404, URL=http://www.juventus.com/wps/wcm/connect/JUVECOM-IT/news/primavera convocati villar news 10agosto2013?pragma=no-cache

包含重定向的 url,所以这意味着 JSoup 获得了正确的重定向 URI。有没有办法用 %20 替换“”,这样我就可以毫无问题地进行解析?

谢谢!

最佳答案

你是对的。这就是问题。我看到的唯一解决方案是执行重定向手册。我写了这个小的递归方法来为你做这件事。见:

public static void main(String[] args) throws IOException
{
String url = "http://www.juventus.com/wps/poc?uri=wcm:oid:91da6dbb-4089-49c0-a1df-3a56671b7020";

Document document = manualRedirectHandler(url);

Elements elements = document.getElementsByClass("juveShareImage");

for (Element element : elements)
{
System.out.println(element.attr("src"));
}

}

private static Document manualRedirectHandler(String url) throws IOException
{
Response response = Jsoup.connect(url.replaceAll(" ", "%20")).followRedirects(false).execute();
int status = response.statusCode();

if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM || status == HttpURLConnection.HTTP_SEE_OTHER)
{
String redirectUrl = response.header("location");
System.out.println("Redirect to: " + redirectUrl);
return manuelRedirectHandler(redirectUrl);
}

return Jsoup.parse(response.body());
}

这将打印你

Redirect to: http://www.juventus.com:80/wps/portal/!ut/p/b0/DcdJDoAgEATAF00GXFC8-QqVWwMuJLLEGP2-1q3Y8Mwm4Qk77pATzv_L6-KQgx-09FDeWmpEr6nRThCk36hGq1QnbScqwRMbNuXCHsFLyuTgjpVLjOMHyfCBUg!!/
Redirect to: http://www.juventus.com/wps/wcm/connect/JUVECOM-IT/news/primavera convocati villar news 10agosto2013?pragma=no-cache
/resources/images/news/inlined/42d386ef-1443-488d-8f3e-583b1e5eef61.jpg

我还为此添加了一个 Jsoup 补丁:

关于java - 给 Jsoup 一个 url,重定向是一个带空格的 url 会导致错误。这个怎么解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18292919/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com