본문 바로가기

Android

Android에서 jsp로 데이터 파라미터 전송하는 방법

보통 jsp웹페이지에서 xml로 변형시켜서 파싱하는 방법은 안드로이드 사용자라면 많이 사용할 것이라고 생각한다. 그러면 그 반대는 어떨까??
감이 안잡혀서 머리 싸매고 하다가 전에 안드로이드 교육을 받은 강사 형의 조언을 받아서 완성하였다.
안드로이드에서 jsp로 데이터를 보낼 때에는 jsp의 action에 데이터를 리스트 형식으로 묶어서 전달하는 방식을 사용하였다.(솔찍히 말하자면 인터넷에 나오는 자료도 보긴했지만 실제로 써보고 나니 정말 허무 그 자체다 ㅡ,.ㅡ;; 이렇게 간단할 줄은 몰랐었기에.....)
일단은 xml에서 editText3개와 버튼 하나를 놓고 버튼을 누르면 데이터를 전송하는 것을 보자.
(일단 이것을 하기 위해서는 jsp 웹 게시판이 작성되어 있어야하는데 jsp 메뉴에 따로 나중에 기술해 두겠다...뭐 일단 이것도 오랫만에 하는 블로그질이라 감이 안오지만서도...;;)

그럼 소스 공개<-


package Jungsoo.Hoe.SMICS;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
public class board_write extends Activity {
 private EditText edt1, edt2, edt3;
 private Button btn1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.board_write);
  edt1 = (EditText) findViewById(R.id.edt1);
  edt2 = (EditText) findViewById(R.id.edt2);
  edt3 = (EditText) findViewById(R.id.edt3);
  btn1 = (Button) findViewById(R.id.btn1);
  btn1.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    write();
    finish();
   }
  });
 }
//DB에 쿼리를 넣는 부분
 private void write() {
  try {
   HttpClient client = new DefaultHttpClient();
   String postURL = "http://211.114.147.131/boardtest/board_write_insert.jsp";
//URL를 어떻게 넣어야할지 정말 고민했다 ㅡ.,ㅡ
//그래서 그냥 떄려 맞췄는데 되었다는...일단 ip주소/jsp프로젝트 name/action 명을 써주면 된다.
   HttpPost post = new HttpPost(postURL);//Http통신을 이용하여 URL를 전달할 것이다.
//보낼 데이터를 리스트로 묶음
   List params = new ArrayList();
   params.add(new BasicNameValuePair("dbname", edt1.getText()//에디터 텍스트의 내용을 긁어옴.
     .toString()));
   params.add(new BasicNameValuePair("dbsubject", edt2.getText()
     .toString()));
   params.add(new BasicNameValuePair("dbmemo", edt3.getText()
     .toString()));
   UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params, "euc-kr");
//보낼 데이터 인코딩...Http. 으로 찾아보니까 EUC-KR이 없어서 저것도 일단 
//때려 맞춘것 ㅡ.,ㅡ UTF-8로 하니깐 웹페이지가 euc-kr이라 죄다 일일히
//바꾸기도 귀찮고해서....
   post.setEntity(ent);
   HttpResponse responsePost = client.execute(post);//클라이언트에서 쿼리를 보냄
   HttpEntity reEntity = responsePost.getEntity();
   if (reEntity != null) {
    Log.w("RESPONSE", EntityUtils.toString(reEntity));
   }
  } catch (Exception e) {
  }
  ;
 }
}



뭐 대충 이런느낌이랄까......
아 참고로 두번째 사진은 웹페이지를 xml로 파싱해서 가져온거니 이것과는 상관없지만
일단은 결과를 봐야 하지 않겠는가......
뭐 잘들어간거만 확인되면 되었지 ㅡ,.ㅡ;;...