2010년 12월 30일 목요일

android post send

앞서 작성한 글에서 언급한 android에서의 기본적인 POST방식을 언급하지 않으려 했으나...
아무튼 적어보련다.

public HttpResponse sendData(String url, String encoding, Map param){
  HttpResponse response = null;
  try {
   HttpClient httpClient = new DefaultHttpClient();
   HttpPost httpPost = new HttpPost(url);
   List list = new ArrayList();
   Iterator it = param.keySet().iterator();
   while(it.hasNext()){
    String key = (String)it.next();
    list.add(new BasicNameValuePair(key,param.get(key).toString()));
   }
   httpPost.setEntity(new UrlEncodedFormEntity(list, encoding));
   response = httpClient.execute(httpPost);
  } catch (Exception e) {
   Log.e("Error", "sendData", e);
  }

  return response;
 }

앞선 2개의 글을 보신 분이라면 나름 내 스타일을 아실터...ㅋㅋ

사실 너무 간단한 소스라 별로 설명할건 없다.

추가로 response는 어찌할것인가.

public String getResponseContent(HttpResponse response){
  StringBuilder sb = new StringBuilder();
  try {
   if(response!=null){
             BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    String str;
    while((str = br.readLine()) != null){
     sb.append(str).append("\n");
    }
   }
  } catch (Exception e) {
   Log.e("Error", "getResponseContent", e);
  }

  return sb.toString();
 }

response에서 내용을 추출하는 코드다.
내가 이렇게 사용한 이유는 이넘을 다시 JSONArray로 변환하기 위해서다.

만약 일반적인 parameter를 추출하기 원한다면
HttpEntity resEntity = response.getEntity();
이걸 이용해서 send하면서 담을때 처럼 거꾸로 사용하면 될듯하다.
해보지 않아서 어찌 할지는 정확하게 모르겠다.
하지만 일반적으로 XML, JSON을 사용한다면 String만 추출하면되니 문제는 없을듯하다.

#SCMInno #에스씨엠이노 #WEBDeK

댓글 없음: