ホームページ >Java >&#&チュートリアル >HttpClient を使用して Java で HTTP 基本認証を実装する方法: よくある落とし穴を回避するには?

HttpClient を使用して Java で HTTP 基本認証を実装する方法: よくある落とし穴を回避するには?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 11:52:031049ブラウズ

How to Implement HTTP Basic Authentication in Java with HttpClient: Avoiding Common Pitfalls?

HttpClient を使用した Java での HTTP Basic 認証の実装

序文

Java で Basic 認証を使用して Curl コマンドをエミュレートしようとする場合Java の場合、次の点を考慮することが重要です:

HttpClient 3.0

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        client.getState().setCredentials(
                new AuthScope("hostname"), // Use the IP address or hostname here
                new UsernamePasswordCredentials("username", "password")
        );
        // ...
    }
}

HttpClient 4.0.1

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        DefaultHttpClient httpclient = new DefaultHttpClient();

        httpclient.getCredentialsProvider().setCredentials(
                new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
                new UsernamePasswordCredentials("username", "password")
        );
        // ...
    }
}

一般的な問題

HttpClient 3.0 と 4.0.1 の両方の例で、無効なスコープ定義が原因で内部サーバー エラー (500) が発生する可能性があります。正しいスコープ定義は、ターゲット サーバーの構成によって異なります。スコープを AuthScope.ANY_HOST および AuthScope.ANY_PORT に設定すると、資格情報が任意のホストおよびポートに適用されると想定されますが、実際にはそうでない場合もあります。ターゲット サーバーの構成を確認し、適切なスコープ定義を使用すると、このエラーが解決されるはずです。

代替方法 (HttpClient 4.0.1)

HttpClient を使用して基本認証を実装する別のアプローチ4.0.1 は次のとおりです:

public class HttpBasicAuth {
    // ...

    public static void main(String[] args) {
        // ...
        String encoding = Base64.getEncoder().encodeToString((user + ":" + pwd).getBytes());
        HttpPost httpPost = new HttpPost("http://host:post/test/login");
        httpPost.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + encoding);
        // ...
    }
}

以上がHttpClient を使用して Java で HTTP 基本認証を実装する方法: よくある落とし穴を回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。