본문 바로가기

프로그래밍/Android

HTTP POST/GET 몇가지 정리

 

연결정보

String url="https://my.site.com/test"

 

클라이언트 생성

HttpClient client = new DefaultHttpClient();

// 아래 파라미터를 미리 설정 후 파라미터를 기반으로 생성해도 된다.

 

파라미터설정 : CoreProtocolPNames

PROTOCOL_VERSION : 프로토콜 버전

USER_AGENT : User-Agent 헤더

.

.

 

HttpParams params = client.getParams();

 

// 프로토콜 정의

params.setParameter( CoreProtocolPName.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

 

 

// client 생성하지 않은경우 생성

// HttpClient client = new DefaultHttpClient(params);

 

 

POST

HttpPost post=new HttpPost( url );

 

// body 구성

// 기본적인 스트링 데이터의 전송

List<NameValuePair> pair = new List<NameValuePair>();

pair.add( new BasicNameValuePair("username", 유저명 ));

pair.add( new BasicNameValuePair("password", 암호 ));

UrlEncodedFormEntity ent = new UrlEncodedFormEntity( pair , HTTP.UTF_8);

post.setEntity( ent );

 

 

// 다양한 entity의 전송 : MultipartEntity

File file = new File(" test.jpg" );

ContentBody fileBody = new FileBody( file , "image/jpeg" );

MultipartEntity mpEntity = new MultipartEntity(); // HttpMultipartMode

mpEntity.addPart( "내파일", fileBody );

mpEntity.addPart( "type" , new StringBody("어쩌구") );

post.setEntity( mpEntity );

 

 

전송 및 응답

 

HttpResponse response = client.execute( post );

HttpEntity entity = response.getEntity();

 

 

if( response.getStatusLine().getStatusCode() == 200 )  // HttpStatus.SC_OK

{

// 데이터 읽기

} else {

// 서버오류

}

 

데이터(BODY) 읽기

* 스트링 읽어오기

String responseString = EntityUtils.toString( entity, "UTF-8" );

 

 

* 스트림으로 읽어오기

InputStream is = null;

is =  entity.getContent();

 

int len = (int) entity.getContentLength();

if( len > 0 ) {

byte[] data = new byte[len];

int offset = 0;

int bytesRead =  0;

do {

bytesRead = is.read( data, offset, len );

offset += bytesRead;

len -= bytesRead;

 

} while( bytesRead > 0 );

 

is.close();

 

is = new ByteArrayInputStream( data );

}

 

 

* 리더 사용해 텍스트형 body 읽어오기

BufferrReader reader = new BufferReader( new InputStreamReader( is, "디코딩형식"));

StringBuilder sb = new StringBuilder();

String line = null;

while( (line = reader.readLine() ) != null ) {

sb.append(line);

sb.append("\n");

}

is.close();

 

데이터 = sb.toString();

 

 

* xml 바로 파싱하기(accept: application/xml 인 경우)

XmlPullParserFactory xml = XmlPullParserFactory.newInstance();

XmlPullParser parser = xml.newPullParser();

parser.setInput( new InputStreamReader( is, "디코딩형식"));

while( parser.next() != XmlPullParser.END_DOCUMENT ) {

String name = parser.getName();

if( name != null && name.equals("태그명") )

값 = parser.nextText();

}

 

연결 종료

client.getConnectionManager().shutdown();

 

 

 

GET

InputStream is =null;

HttpGet get = new HttpGet( url );

HttpClient client = new DefaultHttpClient();

 

HttpResponse response = client.execute( get );

is = response.getEntity().getContent();

'프로그래밍 > Android' 카테고리의 다른 글

앱 연동  (0) 2012.07.27
Parcelable  (0) 2012.05.22
Data Animation???  (0) 2012.04.18
Assets 폴더의 이미지 읽기  (0) 2012.03.15
JSON  (0) 2012.01.31
OpenGL es 조명  (0) 2011.12.07
API demos openGL es 2.0  (0) 2011.11.21
GLSurfaceView 배경 투명하게  (1) 2011.11.04
최상위 뷰 만들기  (0) 2011.10.27
OpenGL 프레임버퍼 사용  (0) 2011.10.27