Java Jsoup格式错误的url

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

我无法使用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(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一起放在一起。