연결정보
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 |