[SPRING] RestTemplate을 사용한 기본 인증 - 컴파일 오류 - 생성자 HttpClient ()가 표시되지 않습니다.
SPRINGRestTemplate을 사용한 기본 인증 - 컴파일 오류 - 생성자 HttpClient ()가 표시되지 않습니다.
기본 인증을 restTemplate에 추가하려고합니다.
내가 만나는 문제는 초기화 할 수 없다는 것입니다 : (코드 스 니펫의 두 가져 오기 모두에서)
HttpClient client = new HttpClient();
이 코드는 컴파일 오류에서 해결됩니다 (이 문제를 해결하기 위해 Eclipse에서 제안을 사용할 수 없음).
1) 문제가 무엇입니까?
2) 잘못된 수업을 들여 왔습니까?
내 코드 조각 :
import org.apache.http.client.HttpClient;
//OR (not together)
import sun.net.www.http.HttpClient;
HttpClient client = new HttpClient(); //this line dosent compile
UsernamePasswordCredentials credentials =
new UsernamePasswordCredentials("USERNAME","PASS");
client.getState().setCredentials(
new AuthScope("www.example.com", 9090, AuthScope.ANY_REALM),
credentials);
CommonsClientHttpRequestFactory commons =
new CommonsClientHttpRequestFactory(client);
RestTemplate template = new RestTemplate(commons);
SomeObject result = template.getForObject(
"http://www.example.com:9090/",SomeObject.class
);
이것을 실행하면 Exception :
> failed due to an unhandled exception: java.lang.Error: Unresolved
> compilation problems: The constructor HttpClient() is not visible
> The method getState() is undefined for the type HttpClient
> CommonsClientHttpRequestFactory cannot be resolved to a type
> CommonsClientHttpRequestFactory cannot be resolved to a type
> SomeObject cannot be resolved to a type The method
> getForObject(String, Class<SomeObject>, Object...) from the type
> RestTemplate refers to the missing type SomeObject SomeObject cannot
> be resolved to a type
해결법
-
==============================
1.결국 기본 인증을 훨씬 쉽게 실행할 수 있습니다.
결국 기본 인증을 훨씬 쉽게 실행할 수 있습니다.
restTemplate.exchange()
하지
restTemplate.getForObject()
내 코드 조각 :
private HttpHeaders createHeaders(final String username, final String password ){ HttpHeaders headers = new HttpHeaders(){ { String auth = username + ":" + password; byte[] encodedAuth = Base64.encodeBase64( auth.getBytes(Charset.forName("US-ASCII")) ); String authHeader = "Basic " + new String( encodedAuth ); set( "Authorization", authHeader ); } }; headers.add("Content-Type", "application/xml"); headers.add("Accept", "application/xml"); return headers; } RestTemplate restTemplate = new RestTemplate(); ResponseEntity<MyClass> response; httpHeaders = this.createHeaders("user", "pass"); String url = "www.example.com" response = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<Object>(httpHeaders), MyClass.class);
그리고 그것은 작동합니다!
-
==============================
2.Apache HttpClient를 사용하는 경우 HttpClient가 인터페이스이기 때문에 DefaultHttpClient를 인스턴스화하십시오.
Apache HttpClient를 사용하는 경우 HttpClient가 인터페이스이기 때문에 DefaultHttpClient를 인스턴스화하십시오.
HttpClient httpclient = new DefaultHttpClient();
여기에서 HttpClient와 함께 다양한 인증 체계 사용에 대한 설명서를 참조하십시오.
-
==============================
3.우리는 스프링 부트에서 다음과 같이 사용할 수 있습니다 :
우리는 스프링 부트에서 다음과 같이 사용할 수 있습니다 :
@SpringBootApplication
공용 클래스 응용 프로그램 구현 CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(Application.class); public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void run(String... args) throws Exception { try{ RestTemplate restTemplate = new RestTemplate(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders = this.createHeaders(); ResponseEntity<String> response; response = restTemplate.exchange("<url>",HttpMethod.GET,new HttpEntity<Object>(httpHeaders),String.class); log.info(response.toString()); } catch(Exception e) { System.out.println("Exception"+e); } } private HttpHeaders createHeaders(){ HttpHeaders headers = new HttpHeaders(){ { set( "Authorization", "3ee140"); } }; return headers; }
}
from https://stackoverflow.com/questions/15462128/basic-authentication-with-resttemplate-compilation-error-the-constructor-htt by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @ JsonProperty 예상대로 작동하지 않습니다. (0) | 2019.04.12 |
---|---|
[SPRING] 스프링 부트 jms를 사용하여 주제를 듣는 법 (0) | 2019.04.12 |
[SPRING] Scala.Option을위한 Spring RequestParam 포매터 (0) | 2019.04.12 |
[SPRING] 내 logback 자바 기반 (no xml) 구성이 무시됩니다. (0) | 2019.04.12 |
[SPRING] spring mvc를 사용하여 webapp / resources / images 디렉토리에 이미지를 업로드하는 방법은 무엇입니까? (0) | 2019.04.12 |