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 기반 프로젝트이므로 그대로 가져오고 실행하기 쉬워야 합니다.

HTTPClient footer