Search

2015년 11월 13일 금요일

[JAVA] [Library] 웹 페이지의 내용을 가져와보자. HttpClient 튜토리얼.

* 웹페이지의 내용을 쉽게 가져오기 위해 HttpClient 라이브러리를 사용해보자.
* 먼저 아래의 사이트에서 Binary로 된 압축파일을 하나 다운 받아 압축을 풀자.
http://hc.apache.org/downloads.cgi



































* 위와같이 HttpClient 파일이 준비되었다면, 이클립스를 열어 Java프로젝트를 생성하자.
* 본 글에서는 프로젝트명을 httpClient로 했고, 정리정돈을 위해 lib 폴더를 만들었다..









* 좀전에 압축 푼 파일의 lib폴더에 있는 모든 .jar 파일들을 프로젝트 내 lib 폴더로 복사하자.



















* 이클립스에 복사된 모든 .jar파일을 선택해 빌드패쓰에 추가해주자.
* 우클릭 -> Build Path -> Add to Build Path





































* 정상적으로 빌드패쓰에 추가가 되었다면 다음과 같은 화면이 나올 것이다.


























* 다음으로는 이 라이브러리를 사용하기 위해 src 폴더에 기본 예제 소스코드들을 추가해보자. 아래 첨부 그림들 참조.
* src에서 우클릭 -> Import -> General -> File System -> Browse

























































* 디랙토리 선택 창까지 왔다면, 아까 압축 푼 파일의 examples 폴더를 선택하고 확인버튼을 눌러주자.
* 그러면 아래와 같이 파일시스템 좌측에 선택한 폴더가 뜨는데, 거기서 체크버튼을 누르고 완료한다.




























* Import가 성공하면 아래와 같이 모든 examples 패키지가 들어가게 된다.








































* 여기서 ClientWithResponseHandler를 열어보면 아래와 같은데, HttpGet의 주소명을 변경하고 실행하면 웹페이지의 내용을 가져올 수 있다.
package org.apache.http.examples.client;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * This example demonstrates the use of the {@link ResponseHandler} to simplify
 * the process of processing the HTTP response and releasing associated resources.
 */
public class ClientWithResponseHandler {

    public final static void main(String[] args) throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpGet httpget = new HttpGet("http://www.google.com/");

            System.out.println("Executing request " + httpget.getRequestLine());

            // Create a custom response handler
            ResponseHandler responseHandler = new ResponseHandler() {

                @Override
                public String handleResponse(
                        final HttpResponse response) throws ClientProtocolException, IOException {
                    int status = response.getStatusLine().getStatusCode();
                    if (status >= 200 && status < 300) {
                        HttpEntity entity = response.getEntity();
                        return entity != null ? EntityUtils.toString(entity) : null;
                    } else {
                        throw new ClientProtocolException("Unexpected response status: " + status);
                    }
                }

            };
            String responseBody = httpclient.execute(httpget, responseHandler);
            System.out.println("----------------------------------------");
            System.out.println(responseBody);
        } finally {
            httpclient.close();
        }
    }
}

댓글 없음:

댓글 쓰기