±âÁ¸ HttpClientÀÇ ¸ÖƼÆÄÆ® ¾÷·Îµå APIµéÀÌ 4.3 ¹öÀü ÀÌÈÄ·Î Deprecated µÇ¾î ÃֽŠ¹öÀü¿¡ ¸Â´Â APIµé·Î ´ëüÇÏ´Ùº¸´Ï
½ÃÇàÂø¿À°¡ ¸¹¾Ò´Ù. ´ÙÀ½Àº ÆÄÀÏ Àü¼Û½Ã Old API¸¦ ÀÌ¿ëÇÑ ¹æ¹ý°ú ÃֽŠ¹æ¹ýÀÇ Â÷ÀÌÁ¡À» º¸¿©ÁÖ´Â ÄÚµåÀÌ´Ù.
(ÀÚ¼¼ÇÑ ³»¿ëÀº http://www.alphafactory.co.kr/post/2013/12/12/multipart-upload-method-in-apache-4-3/ ÂüÁ¶)
/* °ú°Å¹æ½Ä FileBody bin = new FileBody(new File( filePath + fileName )); StringBody comment = new StringBody("BETHECODER HttpClient Tutorials"); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("fileup0", bin); reqEntity.addPart("fileup1", comment); reqEntity.addPart("ONE", new StringBody("11111111")); reqEntity.addPart("TWO", new StringBody("222222222")); httppost.setEntity(reqEntity); */ //ÃֽŹæ½Ä - À§¿Í µ¿ÀÏÇÑ ±â´ÉÀ» ÇÏ´Â Äڵ带 ÃֽŠAPI·Î ´ëüÇÑ ÄÚµåÀÓ MultipartEntityBuilder meb = MultipartEntityBuilder.create(); meb.addBinaryBody("fileup0", new File(filePath + fileName)); meb.addTextBody("fileup1", "BETHECODER HttpClient Tutorials"); meb.addTextBody("ONE", "11111111"); meb.addTextBody("TWO", "222222222"); |
±âÁ¸ÀÇ MultipartEntity ¿Í StringBody°¡ deprecated µÇ¾ú°í À̸¦ MultipartEntityBuilder°¡ ´ëüÇÑ´Ù.
´ÙÀ½Àº MultipartEntityBuilder¸¦ ÀÌ¿ëÇÑ ÆÄÀÏÀü¼Û ÄÚµå(Client´Ü¿¡¼ ½ÇÇà)ÀÌ´Ù.
/*Author : Ȳö¿¬*/ package sample.httpcall; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.net.URLEncoder; import java.nio.charset.Charset; import java.util.Map; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class FileSenderByHttpClient { private String url; private MultipartEntityBuilder params; private static final String DEFAULT_ENCODING = "UTF-8"; /** * @param url Á¢¼ÓÇÒ url */ public FileSenderByHttpClient(String url){ this.url = url; params = MultipartEntityBuilder.create(); } public static void main(String[] args) throws Exception { //ÆÄÀÏÀ» ¼ö½ÅÇÏ´Â ¼¹öÃø URL FileSenderByHttpClient http = new FileSenderByHttpClient("http://exam.mvn.boards/zzetc/file/httptest.jsp"); //Àü¼Û´ë»ó ÆÄÀϵé String filePath1 = "C:/egov_dev/testdata/sender/DSC01127.jpg"; String filePath2 = "C:/egov_dev/testdata/sender/Á¤º¸º¸È£±â»ç.hwp"; //¹®ÀÚ¿°ú ÆÄÀϵéÀ» µ¿½Ã Àü¼Û String rtn = http.addParam("test", "¹®ÀÚ¿ ÆĶó¸ÞÅÍ Å×½ºÆ®´Ù!") .addParam("upload_file1", new File(filePath1)) .addParam("upload_file2", new File(filePath2)) .submit(); System.out.println("result : " + rtn); } /** * Map °´Ã¼¿¡ ÆĶó¹ÌÅ͸í°ú ÆĶó¹ÌÅÍ°ªÀ» ¼³Á¤Çؼ Çѹø¿¡ Àü´Þ * @param Map°´Ã¼, ÆĶó¸ÞÅ͵éÀº UTF-8·Î ÀÎÄÚµù µÊ * @return */ public FileSenderByHttpClient addParam(Map<String, Object> param){ return addParam(param, DEFAULT_ENCODING); } /** * Map °´Ã¼¿¡ ´ã°ÜÁø ÆĶó¹ÌÅÍ°ªÀÇ Å¸ÀÔ¿¡ µû¶ó ÀûÀýÇÑ addParam()À» È£ÃâÇÑ´Ù. * @param Map°´Ã¼ * @param encoding charset * @return */ public FileSenderByHttpClient addParam(Map<String, Object> param, String encoding){ for( Map.Entry<String, Object> e : param.entrySet() ){ if (e.getValue() instanceof File) { addParam(e.getKey(), (File)e.getValue(), encoding); }else{ addParam(e.getKey(), (String)e.getValue(), encoding); } } return this; } /** * ¹®ÀÚ¿ ÆĶó¹ÌÅ͸¦ Ãß°¡ÇÑ´Ù. * @param name ÆĶó¹ÌÅÍ ¸í * @param value ÆĶó¹ÌÅÍ °ª * @return */ public FileSenderByHttpClient addParam(String name, String value){ return addParam(name, value, DEFAULT_ENCODING); } public FileSenderByHttpClient addParam(String name, String value, String encoding){ params.addPart(name, new StringBody(value, ContentType.create("text/plain", encoding))); return this; } /** * ¾÷·ÎµåÇÒ ÆÄÀÏ ÆĶó¹ÌÅ͸¦ Ãß°¡ÇÑ´Ù. * @param name ÆĶó¹ÌÅÍ ¸í * @param file ÆÄÀÏ * @return */ public FileSenderByHttpClient addParam(String name, File file){ return addParam(name, file, DEFAULT_ENCODING); } public FileSenderByHttpClient addParam(String name, File file, String encoding){ if( file.exists() ){ try{ params.addPart( name, new FileBody(file, ContentType.create("application/octet-stream"), URLEncoder.encode(file.getName(), encoding))); }catch( Exception ex ){ ex.printStackTrace(); } } return this; } /** * Ÿ°Ù URL·Î POST ¿äûÀ» º¸³½´Ù. * @return ¿äû°á°ú * @throws Exception */ public String submit() throws Exception{ CloseableHttpClient http = HttpClients.createDefault(); StringBuffer result = new StringBuffer(); try{ HttpPost post = new HttpPost(url); post.setEntity(params.build()); /************* ŸÄÏ URL·Î POST ¿äû **************/ CloseableHttpResponse response = http.execute(post); try{ HttpEntity res = response.getEntity(); BufferedReader br = new BufferedReader(new InputStreamReader(res.getContent(), Charset.forName("UTF-8"))); String buffer = null; while( (buffer = br.readLine())!=null ){ result.append(buffer).append("\r\n"); } }finally{ response.close(); } }finally{ http.close(); } return result.toString(); } } |
»ó±â Äڵ忡 »ç¿ëµÈ ¶óÀ̺귯¸®µéÀº ´ÙÀ½°ú °°´Ù.
httpclient-4.3.3.jar
httpmime-4.3.3.jar
httpcore-4.3.2.jar
httpclient-cache-4.3.3.jar
jsr311-api-1.1.1.jar
fluent-hc-4.3.3.jar
commons-logging-1.1.3.jar
commons-io-2.4.jar
commons-httpclient-3.1.jar
commons-fileupload-1.3.1.jar
commons-codec-1.6.jar
ÀÏ´Ü ¸ðµÎ ³ª¿Çߴµ¥ »ç¿ëÇÏÁö ¾Ê´Â jarµµ Æ÷ÇԵǾî ÀÖÀ» ¼ö ÀÖÀ¸´Ï Ãë»ç ¼±ÅÃÇؼ »ç¿ëÇϱ⠹ٶõ´Ù.
´ÙÀ½Àº »ó±â ¼Ò½º°¡ ½ÇÇàµÇ¸é¼ Àü¼ÛÇÑ ¹®ÀÚ¿°ú ÆÄÀϵéÀ» ¼ö½ÅÇÏ´Â ¼¹ö´Ü jspÀÇ ¼Ò½º ÄÚµåÀÌ´Ù.
<%@ page contentType="text/html;charset=windows-1252"%> <%@ page import="org.apache.commons.fileupload.DiskFileUpload"%> <%@ page import="org.apache.commons.fileupload.FileItem"%> <%@ page import="java.util.List"%> <%@ page import="java.util.Iterator"%> <%@ page import="java.io.File"%> <%@ page import="java.net.URLDecoder"%> <% System.out.println("Content Type =" + request.getContentType()); String revFilePath = "C:/egov_dev/testdata/receiver"; DiskFileUpload dfu = new DiskFileUpload(); //µ¿½Ã¿¡ ¿Ã¸± ¼ö ÀÖ´Â ÃÖ´ë »çÀ̵带 ¼³Á¤ÇÑ´Ù. ¼³Á¤µÈ »çÀÌÁî ÀÌ»óÀÇ ÆÄÀÏÀÌ ¼ö½ÅµÇ¸é
// FileUploadExceptionÀÌ ¹ß»ýÇÑ´Ù. dfu.setSizeMax(20000000); List fileItems = dfu.parseRequest(request); Iterator itr = fileItems.iterator(); while(itr.hasNext()) { FileItem fileItem = (FileItem)itr.next(); //Check if not form field so as to only handle the file inputs //else condition handles the submit button input if(!fileItem.isFormField()) { //ÆÄÀÏÀÎ °æ¿ì String fileNm = URLDecoder.decode(fileItem.getName(), "UTF-8"); //ÇÑ±Û ÆÄÀϸí ó¸®! /*test*/System.out.println("fileName: "+ fileNm ); /*test*/System.out.println("fileSize: "+ fileItem.getSize()); File file= new File(revFilePath, fileNm); /*test*/System.out.println(file.getAbsolutePath()); fileItem.write(file); }else { //¹®ÀÚ¿ÀÎ °æ¿ì /*test*/System.out.println("Field: "+ fileItem.getFieldName() + ", content: " + fileItem.getString()); } } %> Upload Successful!! |
À§ Äڵ带 ½ÇÇàÇÏ·Á¸é WAS¿¡ commons-fileupload-1.3.1.jar ÆÄÀÏÀÌ Á¸ÀçÇØ¾ß ÇÑ´Ù.(WEB-INF/lib Æú´õ¿¡ ÀúÀå)