Apache HttpClient-응답 처리기
응답 핸들러를 사용하여 HTTP 응답을 처리하는 것이 좋습니다. 이 장에서는 응답 처리기를 만드는 방법과이를 사용하여 응답을 처리하는 방법에 대해 설명합니다.
응답 핸들러를 사용하면 모든 HTTP 연결이 자동으로 해제됩니다.
응답 핸들러 만들기
HttpClient API는 다음과 같은 인터페이스를 제공합니다. ResponseHandler 패키지에 org.apache.http.client. 응답 핸들러를 생성하려면이 인터페이스를 구현하고 handleResponse() 방법.
모든 응답에는 상태 코드가 있으며 상태 코드가 200에서 300 사이이면 작업이 성공적으로 수신, 이해 및 수락되었음을 의미합니다. 따라서이 예에서는 이러한 상태 코드가있는 응답의 엔터티를 처리합니다.
응답 핸들러를 사용하여 요청 실행
응답 핸들러를 사용하여 요청을 실행하려면 아래 단계를 따르십시오.
1 단계-HttpClient 개체 만들기
그만큼 createDefault() 의 방법 HttpClients 클래스는 클래스의 객체를 반환합니다. CloseableHttpClient의 기본 구현입니다. HttpClient상호 작용. 이 방법을 사용하여 HttpClient 개체를 만듭니다.
CloseableHttpClient httpclient = HttpClients.createDefault();
2 단계-응답 처리기 인스턴스화
다음 코드 줄을 사용하여 위에서 만든 응답 처리기 개체를 인스턴스화-
ResponseHandler<String> responseHandler = new MyResponseHandler();
3 단계-HttpGet 개체 만들기
그만큼 HttpGet 클래스는 URI를 사용하여 주어진 서버의 정보를 검색하는 HTTP GET 요청을 나타냅니다.
HttpGet 클래스를 인스턴스화하고 URI를 나타내는 문자열을 해당 생성자에 매개 변수로 전달하여 HttpGet 요청을 만듭니다.
ResponseHandler<String> responseHandler = new MyResponseHandler();
4 단계-응답 핸들러를 사용하여 Get 요청 실행
그만큼 CloseableHttpClient 클래스에는 다음과 같은 변형이 있습니다. execute() 두 개의 객체를받는 방법 ResponseHandler 및 HttpUriRequest 및 응답 개체를 반환합니다.
String httpResponse = httpclient.execute(httpget, responseHandler);
예
다음 예제는 응답 핸들러의 사용법을 보여줍니다.
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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;
class MyResponseHandler implements ResponseHandler<String>{
public String handleResponse(final HttpResponse response) throws IOException{
//Get the status of the response
int status = response.getStatusLine().getStatusCode();
if (status >= 200 && status < 300) {
HttpEntity entity = response.getEntity();
if(entity == null) {
return "";
} else {
return EntityUtils.toString(entity);
}
} else {
return ""+status;
}
}
}
public class ResponseHandlerExample {
public static void main(String args[]) throws Exception{
//Create an HttpClient object
CloseableHttpClient httpclient = HttpClients.createDefault();
//instantiate the response handler
ResponseHandler<String> responseHandler = new MyResponseHandler();
//Create an HttpGet object
HttpGet httpget = new HttpGet("http://www.tutorialspoint.com/");
//Execute the Get request by passing the response handler object and HttpGet object
String httpresponse = httpclient.execute(httpget, responseHandler);
System.out.println(httpresponse);
}
}
산출
위의 프로그램은 다음과 같은 출력을 생성합니다.
<!DOCTYPE html>
<!--[if IE 8]><html class = "ie ie8"> <![endif]-->
<!--[if IE 9]><html class = "ie ie9"> <![endif]-->
<!--[if gt IE 9]><!-->
<html lang = "en-US"> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE = edge">
<meta name = "viewport" content = "width = device-width,initial-scale = 1.0,userscalable = yes">
<link href = "https://cdn.muicss.com/mui-0.9.39/extra/mui-rem.min.css"
rel = "stylesheet" type = "text/css" />
<link rel = "stylesheet" href = "/questions/css/home.css?v = 3" />
<script src = "/questions/js/jquery.min.js"></script>
<script src = "/questions/js/fontawesome.js"></script>
<script src = "https://cdn.muicss.com/mui-0.9.39/js/mui.min.js"></script>
</head>
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-232293-17');
</script>
</body>