메뉴 건너뛰기

조회 수 1136 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

정확하게는 모르지만 왠지 내가 알기론 Apache Commons HttpClient 후로젝트가 Apache HttpComponents 로 바뀐것 같다.


그러니까 최신 API 는 아마 Apache HttpComponents 이겠지...


그런데 왜 굳이 옛날 API 로 예제를 맹글게 되었을까..?


피치못할 사정으로 JDK 1.4 기반에서 동작하도록 해야했기 때문이다 -.-



나 같은 저주 받은 개발환경이 아닌 사람들은 이전에 썼던 포스트를 참고해서 고거 쓰면 된다.


뭐 아무튼 예제 소스는 요럿다.

package com.tistory.stove99;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
 
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.StringPart;
import org.apache.commons.lang.StringEscapeUtils;
 
 
public class Http {
    private static final String DEFAULT_ENCODING = "UTF-8";
     
    private String url;
    private String encoding;
    private Map param;
     
     
    public Http(String url){
        this(url, null);
    }
     
    public Http(String url, String encoding){
        this.encoding = encoding==null ? DEFAULT_ENCODING : encoding;
        this.url = url;
         
        param = new HashMap();
    }
     
    /**
     * Http 전송
     * @return
     */
    public String submit(){
        String result = null;
         
        HttpClient client = new HttpClient();
        PostMethod method = new PostMethod (url);
 
        try{
            Part[] parts = new Part[param.size()];
            Iterator it = param.keySet().iterator();
            int index = 0;
            while( it.hasNext() ){
                String key = (String)it.next();
                Object value = param.get(key);
                 
                if( value instanceof File ){
                    // 한글 파일명이 쪽바로 처리가 안되서 StringEscapeUtils 썻음.
                    // 받는 쪽에서는 StringEscapeUtils.unescapeHtml() 로 다시 변환바람.
                    parts[index++] = new FilePart(
                                            key, 
                                            StringEscapeUtils.escapeHtml(((File)value).getName()), 
                                            (File)value, 
                                            null, 
                                            encoding);
                }else{
                    parts[index++] = new StringPart(key, (String)value, encoding);
                }
            }
            method.setRequestEntity(new MultipartRequestEntity(parts, method.getParams()));
             
            client.executeMethod(method);
             
            // read result
            BufferedReader br = new BufferedReader(
                                        new InputStreamReader(method.getResponseBodyAsStream(), encoding));
            String buffer = null;
            StringBuffer tmp = new StringBuffer();
             
            while( (buffer=br.readLine())!=null ){
                tmp.append(buffer).append("\r\n");
            }
             
            result = tmp.toString();
        }catch (HttpException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }finally {
            method.releaseConnection();
        }
         
        return result;
    }
     
    /**
     * 일반 파라메터 추가
     * @param name  파라메터 이름
     * @param value 값
     * @return
     */
    public Http addParam(String name, String value){
        param.put(name, value);
         
        return this;
    }
     
    /**
     * 업로드할 파일을 파라메터로 추가
     * @param name  <input type="file" name="요기들어가는 값"/>
     * @param file
     * @return
     */
    public Http addParam(String name, File file){
        param.put(name, file);
         
        return this;
    }
     
     
    /**
     * 테스트
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        Http http = new Http("http://127.0.0.1:8888/rpm/alarm/receive.kins");
        String result = http.addParam("test", "테스트다1")
                            .addParam("test1", "테스트다2")
                            .addParam("upload_file1", new File("d:\\야훗훗 유지보수.xlsx"))
                            .addParam("upload_file2", new File("d:\\휴가신청서.hwp"))
                            .submit();
         
        System.out.println("result : " + result);
    }
}


Maven Dependency


<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>



List of Articles
번호 제목 날짜 조회 수
111 예외처리 / 예외발생 file 2018.09.21 934
110 직렬화 / 역직렬화 file 2018.09.21 951
109 JAVA public, private, protected 정리 2018.07.09 1001
108 JSON 문자열을 Map 으로 변환하기(Jackson 사용) 2019.01.08 1010
107 JAVA HashMap의 Key값 출력하기 2018.07.09 1079
106 JAVA 인코딩을 변경하여 파일 출력하기 (EUC_KR) 2018.07.09 1105
» Apache Commons HttpClient 3.x 로 Http 서버에 파일 전송하기 file 2019.01.08 1136
104 JAVA 정규표현식을 이용한 패턴매칭(HTML 제거) 2018.07.09 1164
103 Java : JSOUP 를 이용, html에서 소스, 링크경로 추출후 절대 경로로 바꾸기 2019.01.08 1166
102 시간관련 클래스 file 2018.09.21 1186
101 JAVA 현재 시간 구하기 file 2018.07.09 1266
100 변환 (문자, 숫자, KSC5601.....) 2019.01.16 1281
99 JAVA JDK 제거하기 file 2018.07.09 1409
98 자바 날짜 포맷 변환 방법 file 2018.06.21 1439
97 이클립스 html, js 등등의 파일에서 에러표시 지우기 2019.03.05 1447
96 JAVA TreeMap 인덱스 값 가져오기 및 Collections.sort 사용하기 2018.07.09 1487
95 JAVA 이클립스 인코딩 변경하기 file 2018.07.09 1594
94 JDK 9에서 eclipse 실행이 안될때 2018.06.05 1596
93 사용자의 IP를 가져오기 (IPv4) 2020.06.29 1695
92 JAVA CentOS JDK 설치 및 환경변수 설정 file 2018.07.09 1821
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved