«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

HttpClient 약간의 팁 참고 페이지 본문

Android/Tip&Tech

HttpClient 약간의 팁 참고 페이지

행복한 수지아빠 2011. 7. 13. 13:55

출처 : http://bluejames77.blog.me/80124862451

예전에 HttpClient을 쓴 법을 있는데.. 최신에 이것을 다시 쓸일이 있어 정리해봅니다. ^-^;

 

제가 짠 메소드인데 이것만 보면 아마 감이 딱 오시지 않을까 생각됩니다.

 

private static String requestConvert ( String szFilePath, int nPageCount, String szThumbnailSize)
 {

  // 아래처럼 해서 넘길 값이 있다면 키와 밸류 형식으로 파라메타를 넘기게 됩니다
  List<NameValuePair> qparams = new ArrayList<NameValuePair>();
  qparams.add(new BasicNameValuePair("FilePath", szFilePath));
  qparams.add(new BasicNameValuePair("PageCount", String.valueOf(nPageCount)));
  qparams.add(new BasicNameValuePair("ThumbnailSize", szThumbnailSize));
  
  String szResult = null;
  URI uri = null;
  
  try
  {

 // url을 아래처럼 정의할 수 잇습니다.

 // 들어가는 파라메터는 순서대로 -> String scheme, String host, int port, String path, String query, String fragment
   uri = URIUtils.createURI("http", "localhost", 80, "/daview/servlet/viewer", 
  // 파라메터 UTF-8로 넘길수도 있습니다.

   URLEncodedUtils.format(qparams, "UTF-8"), null);

   // Get으로 보낼때는 HttpGet을
   HttpGet httpget = new HttpGet(uri);

   // Post으로 보낼때는 HttpPost를 이용하시면 됩니다.

   // HttpPost httpPost = new HttpPost(uri);
   
   HttpClient client = new DefaultHttpClient();
   HttpResponse response = null;

   // post을 이용하실때엔 여기에 httpPost을 넣으시면 됩니다
   response = client.execute( httpget);
   

   // 성공여부는 200입니다 이것은 response.getStatusLine().getStatusCode() 메소드로 호가인 가능합니다.
   //System.out.println( szFilePath + " 성공여부 : " + response.getStatusLine().getStatusCode());

   HttpEntity entity = response.getEntity();
   BufferedReader br = null;
   if (entity != null) {
    

    szResult = EntityUtils.toString(entity);    

   // EntityUtils.toString은 아래 주석과 같은 역할을 해준답니다.
//    br = new BufferedReader( new InputStreamReader( entity.getContent()));
//    String szLine = null;
//    while ( (szLine = br.readLine()) != null )
//    {
//     szResult = szLine;
//    }
    
   }
   
//   System.out.println( "성공여부 : " + szResult);
  } catch (Exception e) {
   e.printStackTrace();
  }
  
  return szResult;
 }

 

참고로 Get과 Post에 대해서 말씀드리면 Get은 한계가 있습니다.

예전엔 256byte였는데 요즘은 2048byte까지 올라온것 같습니다. Post는 한계가 없습니다.

(http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=131930)

 

그래서 만약 파라메터로 넘길게 많다면 당연히 Get 보다는 Post를 써야 합니다. 그럼 왜 다 Post를 쓰지 Get을 써야 하는걸까요?

그건 Get 방식이 Post보단 빠르기 때문이랍니다.

 

HttpClient을 사용하실려면 여기서 다운 받아서 사용하시면 됩니다.

http://hc.apache.org/httpcomponents-client-ga/