0

我要疯了,试图让 HttpClient 以我想要的方式工作。这一切都超出了我的想象。

我想要做的就是提供一个 URL,该 URL 可以指向网页、.zip 文件、.doc 文件和最终以上述任何一个结尾的重定向。然后我可以将最终状态代码打印到控制台。

任何人都可以在这里帮助我吗?到目前为止,我有(把所有东西都扔给它之后的代码一团糟):

DefaultHttpClient client = new DefaultHttpClient();

    client.setRedirectStrategy(new DefaultRedirectStrategy(){
        public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context)  {
            boolean isRedirect=false;
            try {
                isRedirect = super.isRedirected(request, response, context );
            } catch (org.apache.http.ProtocolException e) {
                System.out.println("what?");
                e.printStackTrace();
            }
            if (!isRedirect) {
                int responseCode = response.getStatusLine().getStatusCode();
                System.out.println(responseCode);
                if (responseCode == 301 || responseCode == 302) {
                    System.out.println("redirect");
                    return true;
                }
            }
            return isRedirect;
        }
    });

    HttpHead test = new HttpHead("http://support.xbox.com/en-US/xbox-live/troubleshoot/game-play");
    HttpEntity httpEntity = null;
    try {
        HttpResponse response = client.execute(test);
        System.out.println(response.getStatusLine().getStatusCode());
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        System.out.println(e);
        System.out.println("400");
    } catch (IOException e) {
        System.out.println("404");
        System.out.println(e);
    }

编辑:

对于这个 url: http: //support.xbox.com/en-US/xbox-live/troubleshoot/game-play我得到 404。我本来期望 200。

对于http://www.google.com我按预期得到 200。

对于http://tinyurl.com/2tx,tinyurl重定向到 google.com 我得到 200。

我不确定我的结果是什么。我只是希望能够从最终用户的角度测试链接以查看它们是否正常工作或损坏。

4

1 回答 1

1

问题是您发送的是 HEAD 请求而不是 GET 请求,xbox 站点只返回 404。

使用:

HttpGet test = new HttpGet("http://support.xbox.com/en-US/xbox-live/troubleshoot/game-play");

没有任何重定向的东西对我来说很好。

于 2012-05-18T21:08:21.803 回答