4

Java文字列が「youtube.com」と「goo.gl/ur2l」を想定しているので2つのURLがあり、関数を作成したい

boolean isSame(String url1, String url2)

これは、両方のURLが最後に同じURLに直接つながるかどうかに関係なく天気を返します。それはJavaでどのように実装されますか?

4

4 に答える 4

3

各 URL に対して HTTP 要求を実行し、HTTP コードを確認します。リダイレクト ( 30*) の場合は、HTTP ヘッダーを抽出しLocationます。これが「元の」URL である必要があります。

于 2012-05-13T17:50:52.227 に答える
1

文字列を IP アドレスに変換して比較する必要があります。そんな感じ:

   InetAddress address = null;

    byte[] ip = new byte[0];

    try {
    address = InetAddress.getByName("google.com");
    ip = address.getAddress();
    } catch (UnknownHostException e) {
    e.printStackTrace();
    }
于 2012-05-13T17:51:36.617 に答える
1

http://www.youtube.comのURL をhttp://bit.ly/9b2Y3Dに短縮しました。を使用して後者にアクセスすると、次のようになります。

$ curl http://bit.ly/9b2Y3D
[...]
> GET /9b2Y3D HTTP/1.1
[...]
< HTTP/1.1 301 Moved
[...]
< Location: http://youtube.com/

ご覧のとおり、短縮された URL は 200 OK ではなく 302 を返します。また、Locationヘッダーは非常に興味深いものです。初心者向けの情報がたくさんあると思います。HttpClient を試して、ステータス コードとLocation. 次に、URLclass,e を特にどのように実装するかを見てくださいequals()

于 2012-05-13T17:53:01.483 に答える
1

200 の http コードが見つかるまで、302 リダイレクトをたどる必要があります。無限のリダイレクトに従わないように設定してください:)

于 2012-05-13T17:55:46.920 に答える