프로그래밍 정리/안드로이드

[Android - 안드로이드] HttpClient / HttpURLConnection

주누다 2014. 10. 5. 14:32
반응형
HttpClient

- 아파치 라이브러리 사용.

- 방대한 API 제공.

- 방대한 API를 제공함으로써 안드로이드 개발팀에서 더 이상 지원하지 않는다고 함.


HttpURLConnection

- 가벼운 버전의 HttpClient라고 보면 됨.

- 핵심적인 API만을 가지고 있음.

- 프로요 이전 버전의 경우 버그들이 많았음.

- 진저브레드 이상에서는 HttpURLConnection을 사용하는 것을 추천함.




HttpURLConnection 예제(POST)

===============================================================================

URL url = new URL(urlStr);

HttpURLConnection http = (HttpURLConnection)url.openConnection();


http.setDefaultUseCaches(false);

http.setDoInput(true); // 서버에서 읽기모드 지정.

http.setDoOutput(true); // 서버에서 쓰기모드 지정.

http.setRequestMethod("POST"); // 전송 방식은 POST


// 서버에게 웹에서 <FORM>으로 값이 넘어온 것과 같은 방식으로 처리하는걸 알려줌.

http.setRequestProperty("content-type", "application/x-www-form-urlencoded");


// 서버로 값 전송

StringBuffer buffer = new StringBuffer();

buffer.append("id").append("=").append(myId).append("&"); // php 변수에 값 대입

buffer.append("pword").append("=").append(myPWord).append("&"); // php 변수 앞에  '$' 붙이지 않음

buffer.append("title").append("=").append(myTitle).append("&"); // 변수 구분은 "&"사용

buffer.append("subject").append("=").append(mySubject);


OutputStreamWriter outStream = new OutputStreamWriter(http.getOutputStream(), "euc-kr");

outStream.write(buffer.toString());

outStream.flush();


// PrintWriter writer = new PrintWriter(outStream);

// writer.write(buffer.toString());

// writer.flush();



// 서버에서 전송받기

InputStreamReader tmp = new InputStreamReader(http.getInputStream(), "euc-kr");

BufferedReader reader = new BufferedReader(tmp);

StringBuilder builder = new StringBuilder();

String str;

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

builder.append(str+"\n");

}

myResult = builder.toString();

===============================================================================



HttpClient 예제(POST)

===============================================================================

HttpClient client = new DefaultHttpClient();

HttpPost httpPost = new HttpPost(urlStr);


List<NameValuePair> fields = new ArrayList<NameValuePair>();

fields.add(new BasicNameValuePair("id", myId));

fields.add(new BasicNameValuePair("pword", myPWord));

fields.add(new BasicNameValuePair("title", myTitle));

fields.add(new BasicNameValuePair("subject", mySubject));


httpPost.setEntity(new UrlEncodedFormEntity(fields, "euc-kr"));


HttpResponse response = client.execute(httpPost);


if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){

BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "euc-kr"));

String line = null;

while(true){

line = reader.readLine();

if(line == null)

break;

output.append(line + "\n");

}

myResult = output.toString();

reader.close();

}

===============================================================================

반응형