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 중국어 웹사이트의 기타 관련 기사를 참조하세요!