[JAVA] ¾ÆÆÄÄ¡¿¡¼ Á¦°øÇÏ´Â HttpComponents·Î Http Client ¸¸µé±â
¾ÆÆÄÄ¡¿¡¼ Á¦°øÇÏ´Â HttpComponents·Î Http Client ¸¸µé±â
Æеå¿ë À¥ ȸéÀ» Á¦ÀÛÇÏ°í ±× È¸é¿¡ »ý¼ºµÈ 16°³ÀÇ ¹öÆ°À» Ŭ¸¯ÇßÀ»¶§ ¿ø°Ý ¼ºñ½º°¡ Á¦¾îµÇ´Â ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
1. Maven
ù¹ø°·Î Maven ¼³Á¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù. HttpComponents¸¸ ÇÊ¿äÇÑ°Ô ¾Æ´Ï¶ó ±âÀçµÈ ¾Æ·¡ÀÇ ¶óÀ̺귯¸®µµ ÇÊ¿äÇÕ´Ï´Ù.
¾È±×·³ º¸³¾¶§ ¿¡·¯°¡ ³ª´õ¶ó±¸¿ä.
ClassNotFoundException À̶ó°í Áö°Ü¿î ¤Ñ,.¤Ñ °¡²û ¿Ö ³ª´ÂÁö ¿øÀκҸíÀÇ ¿¡·¯ ƯÈ÷ ¶óÀ̺귯¸®¸¦ ¾²´Âµ¥ ÀÌ·± ¿¡·¯°¡ ³ª¸é ã±â °ï¶õÇØ¿©..
<!-- HTTP COMPONENTS -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.4</version>
</dependency>
2. JAVA
A. postHandler Method Á¤ÀÇ
/**
* POST HANDLER Æ÷½ºÆ®ÀÇ ½ÇÁúÀûÀÎ ¿äû
* @author GOEDOKID
* @category method
* @since 2016.01.20
* @param url ¿äûÇÒ HTTP URL
* @param params ? ÀÌÇÏ A=A Çü½ÄÀÇ ÆĶó¹ÌÅÍ
* @param encoding ÆĶó¹ÌÅÍ ÀÎÄÚµù Çü½Ä
* @return ÀÀ´ä¹ÞÀ» ¹®ÀÚ¿ (String)
* @throws Exception
*/
public String postHandler(String url, Map<String, String> params, String encoding) throws Exception {
//Ŭ¶óÀ̾ðÆ® »ý¼º
CloseableHttpClient httpClient = HttpClients.createDefault();
//¼³Á¤ Ä¿½ºÅÒ ºô´õ »ý¼º(ŸÀԾƿô µî)
Builder builder = RequestConfig.custom();
builder.setConnectionRequestTimeout(4000);
builder.setSocketTimeout(4000);
RequestConfig config = builder.build();
try{
//HttpPost »ý¼º
HttpPost post = new HttpPost(url);
//MapÇüÅÂÀÇ ÆĶó¹ÌÅÍ Á¤º¸¸¦ NameValuePair List ÇüÅ·Πº¯È¯
List<NameValuePair> paramList = convertParam(params);
//ÆĶó¹ÌÅÍ ¼ÂÆÃ
post.setEntity(new UrlEncodedFormEntity(paramList, encoding));
//ºô´õ ¼³Á¤ SET
post.setConfig(config);
//Response Handler Á¤ÀÇ
ResponseHandler<String> rh = new HttpHandler();
//Àü¼Û ¹× return
return httpClient.execute(post, rh);
}catch(ConnectTimeoutException CTE){
CTE.getStackTrace();
throw new ConnectTimeoutException("CTE");
}catch(SocketTimeoutException STE){
STE.getStackTrace();
throw new SocketTimeoutException("STE");
}catch(IOException IOE) {
IOE.getStackTrace();
throw new IOException("IOE");
}finally{
try {
httpClient.close();
} catch (IOException IOE) {
IOE.getStackTrace();
throw new IOException("IOE");
}
}
}
B. convertParam Method Á¤ÀÇ
MapÇüÅÂÀÇ ÆĶó¹ÌÅÍ MapÀ» List<NameValuePair>ÇüÅ·Πº¯È¯
/**
* ÆĶó¹ÌÅÍ NameValuePair·Î º¯È¯
* @author GOEDOKID
* @category method
* @since 2016.01.20
* @param params
* @return List<NameValuePair>
*/
private List<NameValuePair> convertParam(Map<String, String> params){
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
for(Map.Entry<String, String> entry : params.entrySet()) {
paramList.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
return paramList;
}
B. HttpHandler Class Á¤ÀÇ
AbstractResponseHandler¸¦ »ó¼ÓÇÏ¿© ResponseHandler Ŭ·¡½º »ý¼º
ÀÏÄÉ »ý¼ºÇÏÁö ¾Ê°í Á¦°øµÇ´Â ±âº» Handler¸¦ »ç¿ëÇÏ´Ï response·Î ¾Æ¹«°Íµµ ¾È¹Þ¾ÒÀ»¶§ NullException ¿¡·¯°¡ ¹ß»ýÇÏ¿© Á¤ÀÇÇؼ »ç¿ëÇÔ.
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpResponseException;
import org.apache.http.impl.client.AbstractResponseHandler;
import org.apache.http.util.EntityUtils;
/**
* HttpResponse Handler Class
* @category Class
* @author GOEDOKID
* @since 2016.01.20
*/
public class HttpHandler extends AbstractResponseHandler<String> {
/**
* HandlerEntity
* @author GOEDOKID
* @category Method
* @since 2016.01.20
*/
@Override
public String handleEntity(final HttpEntity entity) throws IOException {
return EntityUtils.toString(entity);
}
/**
* handleResponse
* @author GOEDOKID
* @category Method
* @since 2016.01.20
*/
@Override
public String handleResponse(
final HttpResponse response) throws HttpResponseException, IOException {
return super.handleResponse(response);
}
}