메뉴 건너뛰기

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

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


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


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


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



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


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

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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


1
2
3
4
5
6
7
8
9
10
<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
번호 제목 날짜 조회 수
112 이클립스 html, js 등등의 파일에서 에러표시 지우기 2019.03.05 1564
111 A java Runtime Environment(JRE) or Java Development Kit(JDK) must be ~~~~ 하면서 이클립스가 실행안될때. file 2019.03.05 1008
110 변환 (문자, 숫자, KSC5601.....) 2019.01.16 1389
109 기본적인 스크립트 보안 2019.01.16 6157
108 JAVA/JSP SQL Injection 해킹 방지를 위한 코딩 2019.01.10 979
107 Java : JSOUP 를 이용, html에서 소스, 링크경로 추출후 절대 경로로 바꾸기 2019.01.08 1285
» Apache Commons HttpClient 3.x 로 Http 서버에 파일 전송하기 file 2019.01.08 1258
105 JSON 문자열을 Map 으로 변환하기(Jackson 사용) 2019.01.08 1130
104 시간관련 클래스 file 2018.09.21 1295
103 직렬화 / 역직렬화 file 2018.09.21 1057
102 예외처리 / 예외발생 file 2018.09.21 1035
101 JAVA 현재 시간 구하기 file 2018.07.09 1376
100 JAVA 이클립스 인코딩 변경하기 file 2018.07.09 1724
99 JAVA JDK 제거하기 file 2018.07.09 1512
98 JAVA CentOS JDK 설치 및 환경변수 설정 file 2018.07.09 1930
97 JAVA 정규표현식을 이용한 패턴매칭(HTML 제거) 2018.07.09 1264
96 JAVA 두개의 문서 파일 비교하기 2018.07.09 2505
95 JAVA 인코딩을 변경하여 파일 출력하기 (EUC_KR) 2018.07.09 1207
94 JAVA TreeMap 인덱스 값 가져오기 및 Collections.sort 사용하기 2018.07.09 1656
93 JAVA public, private, protected 정리 2018.07.09 1110
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5