메뉴 건너뛰기

조회 수 1138 추천 수 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
번호 제목 날짜 조회 수
51 인터페이스 2016.09.13 3089
50 인터페이스와 다형성 2016.09.13 3535
49 다형성 file 2016.09.13 3260
48 쓰레드의 동기화 2016.09.13 3315
47 쓰레드의 실행제어 file 2016.09.13 3264
46 데몬쓰레드 2016.09.13 3099
45 쓰레드 그룹 file 2016.09.13 3323
44 쓰레드의 우선순위 2016.09.13 3503
43 쓰레드 기본 2016.09.13 3288
42 File 클래스 file 2016.09.13 3603
41 문자 기반 스트림 2016.09.13 3440
40 바이트 기반의 스트림 file 2016.09.13 3763
39 파일I/O 개요 file 2016.09.13 3507
38 제네릭 file 2016.09.13 3297
37 컬렉션 프레임워크 file 2016.09.13 3705
36 static 2016.09.13 3354
35 클래스 메서드와 인스턴스 메서드 2016.09.13 3720
34 클래스멤버와 인스턴스멤버간의 참조와 호출 2016.09.13 3346
33 변수의 종류 2016.09.13 3978
32 JSP, Spring, GMail 메일발송 간단 예제 2016.09.12 32791
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved