0

HttpClientを希望どおりに動作させようとすると気が狂います。それはすべて私の頭を越えています。

私がやりたいのはURLを提供することだけです。URLはWebページ、.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-play404を取得しています。200を期待していました。

http://www.google.comの場合、期待どおりに200を取得します。

http://tinyurl.com/2txの場合、Google.comへのtinyurlリダイレクトは200になります。

結果をどうすればいいのかわかりません。リンクをテストして、エンドユーザーの観点からリンクが機能しているか壊れているかを確認できるようにしたいだけです。

4

1 に答える 1

1

問題は、xboxサイトが404を返すだけのGETリクエストではなくHEADリクエストを送信していることです。

使用:

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

リダイレクトがなくても、私にとっては問題なく機能します。

于 2012-05-18T21:08:21.803 に答える