안드로이드 환경에서 HTTP 요청을 날리기 위해서 할 수 있는 방법으로는 여러가지가 있겠습니다만, POST에서 인코딩된 한글 문자열을 처리한다거나 파일을 첨부한다거나 하는 경우에는 아무래도 생각할것이 많아질 것 같습니다.
간단하게 도움이 될만한 예제를 발견하여 포스팅 해봅니다. 이 예제를 실행해 보기 위해서는 apache-mime4j와 httpmime 라이브러리가 필요합니다.
HTTP GET
try { HttpClient client = new DefaultHttpClient(); String getURL = "http://www.google.com"; HttpGet get = new HttpGet(getURL); HttpResponse responseGet = client.execute(get); HttpEntity resEntityGet = responseGet.getEntity(); if (resEntityGet != null) { // 결과를 처리합니다. Log.i("RESPONSE", EntityUtils.toString(resEntityGet)); } } catch (Exception e) { e.printStackTrace(); }
HTTP POST
try { HttpClient client = new DefaultHttpClient(); String postURL = "http://www.google.com"; HttpPost post = new HttpPost(postURL); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("user", "kris")); params.add(new BasicNameValuePair("pass", "xyz")); UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8); post.setEntity(ent); HttpResponse responsePOST = client.execute(post); HttpEntity resEntity = responsePOST.getEntity(); if (resEntity != null) { Log.i("RESPONSE", EntityUtils.toString(resEntity)); } } catch (Exception e) { e.printStackTrace(); }
HTTP POST (File Attached)
File file = new File("path/to/your/file.txt"); try { HttpClient client = new DefaultHttpClient(); String postURL = "http://www.google.com"; HttpPost post = new HttpPost(postURL); FileBody bin = new FileBody(file); MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); reqEntity.addPart("myFile", bin); post.setEntity(reqEntity); HttpResponse response = client.execute(post); HttpEntity resEntity = response.getEntity(); if (resEntity != null) { Log.i("RESPONSE", EntityUtils.toString(resEntity)); } } catch (Exception e) { e.printStackTrace(); }
위의 예제들중에 GET방식 말고는 그야말로 예제에 불과합니다. POST에는 파라미터를 추가하는 예시가 있고 마지막에는 파일을 첨부하는 과정이 정리되어있습니다. 이를 응용하여 다양한 형태의 서버와의 통신을 구현하실 수 있습니다.
결과를 대충 찍어봤는데 잘 나오는군요.
http://james.apache.org/download.cgi
http://hc.apache.org/downloads.cgi
http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/