> Java > java지도 시간 > HttpClient를 사용하여 Java에서 HTTP 기본 인증을 구현하는 방법: 일반적인 함정을 피합니까?

HttpClient를 사용하여 Java에서 HTTP 기본 인증을 구현하는 방법: 일반적인 함정을 피합니까?

Susan Sarandon
풀어 주다: 2024-11-16 11:52:03
원래의
1045명이 탐색했습니다.

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

HttpClient를 사용하여 Java에서 HTTP 기본 인증 구현

Prelude

기본 인증으로 컬 명령을 에뮬레이션하려고 할 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿