gpt4 book ai didi

java - Jsoup 格式错误的网址

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:17 25 4
gpt4 key购买 nike

我在使用 JSoup 连接到 url 时遇到问题。

我要测试的 url 是 www.xbox.com/en-US/security,这是一个 302(我认为)重定向到 http://www.xbox.com/en-US/Live/Account-Security .我已将 jsoup 设置为遵循重定向并使用 .headers("location") 获取新的 url。返回的 url 是/en-US/Live/Account-Security。我不确定如何处理它,我的代码如下:

while (i < retries){
try {
response = Jsoup.connect(checkUrl)
.userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
.followRedirects(false)
.timeout(10000)
.execute();
success = true;
break;
} catch (SocketTimeoutException ex){
timeout = true;
} catch (MalformedURLException ep){
malformedUrl = true;
}catch (IOException e) {
statusCode = 404;
}
}

private void getStatus(){
if (success){
statusCode = response.statusCode();
success = false;
}
if (statusCode >= 300 && statusCode <= 399){
//System.out.println("redirect: " +statusCode + " " +checkUrl);
checkUrl = response.header("location");
//System.out.println(checkUrl);
connect();
getStatus();
}
}

有没有人对如何处理这个问题有建议?或者我应该检查我的 checkUrl = response.header("location");看看它是否是一个有效的 url,如果不是不测试它?

最佳答案

首先要做的事情是:如果您尝试访问“www.xbox.com/en-US/security”,它会向您抛出一个 MalformedException,因此不会将您重定向到您想要的位置。

问题是我只使用 boolean 变量 success,如果捕获到任何异常则将其设置为 false。再一次,我不知道您是否在使用超时或任何格式错误的变量。

在那之后我会说 IOException 之后的那一行永远没有用。我还是无法分辨,因为我看不到完整的代码。

现在...针对您的问题:返回的字符串是您提供的第一个 URL 中的域。它会像这样简单地进行:

//Assuming you won't ever change it, make it a final
//variable for less memory usage.
final String URL = "http://www.xbox.com/en-US/security";

//Whatever piece of processing here

//Some tests just to make sure you'll get what you're
//fetching:
String newUrl = ""
if (checkUrl.startsWith("/"))
newUrl = URL + checkUrl;

if (checkUrl.startsWith("http://"))
newUrl = checkUrl;

if (checkUrl.startsWith("www"))
newUrl = "http://" + checkUrl;

这段代码将基本上确保您可以浏览 url,而不会出现 MalformedUrlException。我建议在某处放置一个 manageUrl() 方法并测试获取的 URL 是否在您正在搜索的域内,否则您可能最终会进入电子商务或公共(public)网站。

希望对您有所帮助 =)

关于java - Jsoup 格式错误的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621403/

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