Java Jsoup格式错误的url
我无法使用JSoup连接到url 我尝试测试的url是www.xbox.com/en-US/security,它是302(我想)重定向到的。我已经设置了jsoup来跟踪重定向,并使用.headers(“location”)获取新的url。返回的url为/en US/Live/Account Security。我不知道如何处理,我的代码如下:Java Jsoup格式错误的url,java,jsoup,Java,Jsoup,我无法使用JSoup连接到url 我尝试测试的url是www.xbox.com/en-US/security,它是302(我想)重定向到的。我已经设置了jsoup来跟踪重定向,并使用.headers(“location”)获取新的url。返回的url为/en US/Live/Account Security。我不知道如何处理,我的代码如下: while (i < retries){ try { response = Jsoup.connect(che
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();
}
}
while(i 如果(statusCode>=300&&statusCode第一件事:如果您尝试访问“www.xbox.com/en-US/security”,它将引发错误的异常,因此不会将您重定向到您想要的位置
还有一个问题是,我只使用布尔变量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中导航,而不会出现一些错误的异常。我建议在某个地方放置一个manageUrl()方法,并测试获取的URL是否在您正在搜索的域中,或者您可能会出现在电子商务或公共网站中
希望有帮助=)谢谢,你能解释一下我有点困惑的地方吗。在你的第一次检查中,你把URL改为“newUrl=checkUrl+URL”;这会不会给我类似“/live/account sec”的东西urityhttp://www.xbox.com/en-US/security".我需要找出基本url是什么,并将其与checkUrl连接起来?哈哈。我的错误。它应该是url+checkUrl。只是编辑了它。但没错。就是这样。你应该找到所谓的规范url。它总是类似于“”或“”。(如果你浏览hrefs,你会发现在许多网站中,你不会被重定向到一个完整的页面,而是重定向到其中的一部分,这一部分后来与这个规范的url一起放在一起。