ÃֽŠ°Ô½Ã±Û(JAVA)
2019.01.13 / 22:14

[JAVA] ¾ÆÆÄÄ¡¿¡¼­ Á¦°øÇÏ´Â HttpComponents·Î Http Client ¸¸µé±â

hanulbit
Ãßõ ¼ö 262

¾ÆÆÄÄ¡¿¡¼­ Á¦°øÇÏ´Â 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);
 }
}