Apache 에서는 우리에게 일용할 수많은 프로그램과 라이브러리를 제공해 주시는데, 그 중에 HttpClient 도 존재한다. 이 라이브러리는 Java 코드에서 HTTP 프로토콜로 GET 혹은 POST 로 값을 전송할 때 유용하다.
그런데 파일을 포함한 전송(enctype을 파일전송으로 세팅해서 보내고 싶을 때)의 경우 예전 방식으로 설명된 것이 대부분이라...해당 method 들이 폐기예정 상태가 되어 보기가 싫다. 난 밑줄 그어진 method 는 싫어요~~~
그래서 아래와 같이 구현하면 된다.
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
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;
...
...
...
File testFile1 = new File()
...
...
...
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
Part[] parts = { new StringPart("test1", "testValue1"), new FilePart("test2", testFile1) };
post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));
try {
int status = client.executeMethod(post);
if (status == HttpStatus.SC_OK) {
// 전송 성공(200)
} else {
// 전송 실패
}
} finally {
post.releaseConnection();
}
참 쉽죠잉~~~(쉽긴 개뿔...-_-);
요점은...기존과 달리 일반 PostMethod 로 만든 뒤 Part[] 를 이용해서 일반값와 이진값을 파트로 만들어서 request entity(요청 요소 쯤 되려나)에 실어서 보낸다는 것이다.
참고할 사람들은 참고해주시고, 퍼가지 마시고...퍼가더라도 출처와 링크는 정확히 걸어주세요~