http://wowmymwow.tistory.com/m/post/58
2개의 방법이 있다.
첫번째는 java.net 패키지를 이용하는 것이다.두번째는 org.apache 패키지를 이용하는 것이다.
2개가 비슷해서 처음에는 좀 헷갈린다.
그래서 차이점에 대해서 오늘 배운 것을 정리해보겠다.
1. java.net 사용법
URL url = new URL(addr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
if (conn != null) {
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
for (;;) {
String line = br.readLine();
if (line == null) break;
html.append(line + '\n');
}
br.close();
}
conn.disconnect();
}
2.번째 org.apache 사용법
HttpGet httpget = new HttpGet(addr);
DefaultHttpClient client = new DefaultHttpClient();
StringBuilder html = new StringBuilder();
try {
HttpResponse response = client.execute(httpget);
BufferedReader br = new BufferedReader(new
InputStreamReader(response.getEntity().getContent()));
for (;;) {
String line = br.readLine();
if (line == null) break;
html.append(line + '\n');
}
br.close();
}
이 정도이다.
좀 다른 점은 thread를 사용할 때 apache 에서는 ResponseHanlder 를 등록할 수 있다는 것이다. html 소스를 모두 받고 나면 실행하는 핸들러이다.
public void run() {
HttpGet get = new HttpGet(mAddr);
DefaultHttpClient client = new DefaultHttpClient();
try {
client.execute(get,mResHandler);
}
catch (Exception e) {;}
}
ResponseHandler<String> mResHandler = new ResponseHandler<String>() {
public String handleResponse(HttpResponse response) {
StringBuilder html = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new
InputStreamReader(response.getEntity().getContent()));
for (;;) {
String line = br.readLine();
if (line == null) break;
html.append(line + '\n');
}
br.close();
Message message = mAfterDown.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("result", html.toString());
message.setData(bundle);
mAfterDown.sendMessage(message);
} catch (Exception e) {;}
return html.toString();
}
};
이 정도이다. client.execute(get,mResHandler);를 실행한후다 끝나면 handleResponse()를 실행한다.
좀 이해하기 어려운 것은 response.getEntity().getContent() 부분이다.
도대체 getEntity()가 무엇인지 모르겠다.
반응형
'차근차근 > Android' 카테고리의 다른 글
startActivityForResult(), onActivityResult() 사용하기 (0) | 2014.08.29 |
---|---|
안드로이드 특정파일 미디어 스캐닝 (0) | 2014.08.29 |
앨범에서 사진 선택, 동영상 선택 (0) | 2014.08.28 |
회전오류를 복구하는 카메라를 이용한 Bitmap 이미지 캡춰링 (0) | 2014.08.28 |
[안드로이드]파일 연결 - Intent setDataAndType(Uri , MimeType) (0) | 2014.08.28 |