반응형
출처 - http://pstory.tistory.com/62
파일과 파라메터 정보 전송 (post)
파일과 파라메터 정보 전송 (post)
//---------------------------------------------------- //파일 폼 데이터 스레드 //---------------------------------------------------- private class AsyncFileThread extends Thread {
String address;
File file;
public AsyncFileThread(String addr, File _file){
address = addr;
file = _file;
}
public void run(){
httpclient = new DefaultHttpClient();
try {
HttpPost post = new HttpPost(address);
//헤더 설정
post.setHeader( "Connection" , "Keep-Alive" );
post.setHeader( "Accept-Charset" , "UTF-8" );
post.setHeader( "ENCTYPE" , "multipart/form-data" );
//멀티파트 엔티티 생성, 파일 이름이 한글일 경우 Charset을 정하는 게 좋음
MultipartEntity multipartContent =
new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,
null , Charset.forName( "UTF-8" ));
//파일 붙임
FileBody cbFile = new FileBody(file);
multipartContent.addPart( "file1" , cbFile);
//파라메터
for (NameValuePair nvp:nameValues){
multipartContent.addPart(nvp.getName(),
new StringBody(URLEncoder.encode(nvp.getValue(), HTTP.UTF_8)));
}
//파일 사이즈
multipartContent.addPart( "fileSize" , new StringBody(String.valueOf(file.length())));
//HttpPost Entity에 연결
post.setEntity(multipartContent);
//10초 응답시간 타임아웃 설정
HttpParams params = httpclient.getParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpConnectionParams.setConnectionTimeout(params, 10000 );
HttpConnectionParams.setSoTimeout(params, 10000 );
//org.apache.http.client.HttpClient 로 실행
httpclient.execute(post, responseHandler);
} catch (ConnectTimeoutException e){
// 타임 아웃 연결 에러시
Message message = resultHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString(RESULT, TIMEOUT_RESULT);
message.setData(bundle);
resultHandler.sendMessage(message);
stringData = e.toString();
} catch (Exception e){
// 기타 오류시
Message message = resultHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString(RESULT, ERROR_RESULT);
message.setData(bundle);
resultHandler.sendMessage(message);
stringData = e.toString();
} finally {
httpclient.getConnectionManager().shutdown();
}
} } |
반응형
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드]EditText 소프트 키보드가 열린상태에서 BACK KEY Disable하는법 (0) | 2011.08.31 |
---|---|
[안드로이드] 한글에 Bold 속성 주기 (0) | 2011.08.31 |
HttpClient 4.1.1 버전에서 파일 첨부 Request 요청 만들기 (0) | 2011.08.24 |
POST방식으로 파일과 텍스트 함께 전송 multipart/form-data이용 (0) | 2011.08.24 |
안드로이드(android)에서 java 의 HttpClient 4.0 클래스를 이용한 네트웍 프로그램 구현 (0) | 2011.08.24 |
댓글