2012년 1월 6일 금요일

HttpClient 를 이용한 POST 방식의 첨부파일 전송

일단, Apache 재단의 위대함을 찬양함!!!

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(요청 요소 쯤 되려나)에 실어서 보낸다는 것이다.



참고할 사람들은 참고해주시고, 퍼가지 마시고...퍼가더라도 출처와 링크는 정확히 걸어주세요~

2011년 11월 14일 월요일

갤럭시탭 와이파이(SHW-M180W, 카탭) 루팅중...

난 TI08 펌웨어였음. 그런데 펌웨어는 못구하겠음. 일단 커널만 바꿔치기 하므로 정말 필수는 아니라고 봄.

1. 오딘(커널 입히기 위해 볼륨다운+전원키로 다운로드 모드로 진입)
2. ed08 커널(오딘을 이용해 프로요로 강제 다운로드, 완료 후 자동 재부팅)
3. 슈퍼원클릭(루팅 한방에, 끝나고 나서 전원버튼 8초 눌러서 강제 종료)
4. ti08 커널(다시 진져브레드로 올리기 위해 볼륨다움+전원키로 다운로드 모드 진입)

슈퍼원클릭 실행 후 adb.exe창에서 멈추고 진행 안되면 USB 디버깅의 문제일 가능성이 있음. 기존에 체크해놓고 썼는데, USB 뽑고 해당 기능을 uncheck 한 뒤에 다시 check 해서 새로 입히면 진행이 됨.