1. 개요
이 빠른 사용방법(예제)에서는 Apache HttpClient 를 사용하여 사용자 지정 User-Agent 헤더 를 보내는 방법을 보여줍니다 .
2. HttpClient 에서 User-Agent 설정
2.1. HttpClient 4.3 이전
이전 버전의 Http 클라이언트(4.3 이전)로 작업할 때 User-Agent 값 설정은 저수준 API를 통해 수행되었습니다 .
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0 Firefox/26.0");
원시 http.useragent 속성 을 처리하지 않고 더 높은 수준의 API를 통해서도 동일한 작업을 수행할 수 있습니다 .
HttpProtocolParams.setUserAgent(client.getParams(), "Mozilla/5.0 Firefox/26.0");
전체 예는 다음과 같습니다.
@Test
public void whenClientUsesCustomUserAgent_thenCorrect()
throws ClientProtocolException, IOException {
DefaultHttpClient client = new DefaultHttpClient();
HttpProtocolParams.setUserAgent(client.getParams(), "Mozilla/5.0 Firefox/26.0");
HttpGet request = new HttpGet("http://www.github.com");
client.execute(request);
}
2.2. HttpClient 4.3 이후
최신 버전의 Apache 클라이언트(4.3 이후)에서는 새로운 유창한 API를 통해 훨씬 깔끔한 방식으로 동일한 작업을 수행합니다.
@Test
public void whenRequestHasCustomUserAgent_thenCorrect()
throws ClientProtocolException, IOException {
HttpClient instance = HttpClients.custom().setUserAgent("Mozilla/5.0 Firefox/26.0").build();
instance.execute(new HttpGet("http://www.github.com"));
}
3. 개별 요청에 대한 사용자 에이전트 설정
사용자 지정 User-Agent 헤더는 전체 HttpClient 가 아닌 개별 요청에 설정할 수도 있습니다 .
@Test
public void givenDeprecatedApi_whenRequestHasCustomUserAgent_thenCorrect()
throws ClientProtocolException, IOException {
HttpClient instance = HttpClients.custom().build();
HttpGet request = new HttpGet(SAMPLE_URL);
request.setHeader(HttpHeaders.USER_AGENT, "Mozilla/5.0 Firefox/26.0");
instance.execute(request);
}
4. 결론
이 문서에서는 HttpClient를 사용하여 사용자 지정 User-Agent 헤더 가 있는 요청을 보내는 방법 (예: 특정 브라우저의 동작을 시뮬레이트)을 설명했습니다.
이 모든 예제와 코드 스니펫의 구현은 내 github 프로젝트 에서 찾을 수 있습니다. 이것은 Eclipse 기반 프로젝트이므로 그대로 가져오고 실행하기 쉬워야 합니다.