본문 바로가기

안드로이드

Android , asp.net, mssql 연동 [2]

asp.net 과 안드로이드 앱 연동을 포스팅 해보려고 합니다.. (xml, soap통신 이용)



1. asp.net 웹사이트에  웹서비스 -> 웹메소드 구현

2. android에서 Soap통신  클래스 작성

3. searchData 결과값 xml 파싱


----------------------------------------------------------------------------------------------------

1. soap 통신 클래스 

1) 입력 edittext , 버튼 ,출력  textview 를 레이아웃에 추가해줍니다..

2) ksoap2-android-assembly-2.4-jar-with-dependencies_PATCH_TIZIANA.jar 를 라이브러리에 등록해 줍니다


ksoap2-android-assembly-2.4-jar-with-dependencies_PATCH_TIZ.jar


3) 검색값을 입력하고 버튼을 누르면 soap통신을 시작하고 xml 파싱해서 출력 textview에 결과를 출력합니다


///////////////////////////////////////////////////////////////////////////////////

public class SoapExample extends Activity {


private static final String SOAP_ACTION = "http://tempuri.org/ Response_SearchData";

private static final String METHOD_NAME = " Response_SearchData";

private static final String NAMESPACE = "http://tempuri.org/";

private static final String URL = "http://웹사이트 url/WebService.asmx";


Edittext searchText ;

TextView outPut;


 @Override

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       requestWindowFeature(Window.FEATURE_NO_TITLE);

       setContentView(R.layout.badfood);

  

searchText = (( Edittext  ) findViewById(R.id.input));

outPut= ((TextView) findViewById(R.id.output));

 Button  searchbtn = (( Button) findViewById(R.id.soap_btn));

searchbtn.setOnClickListener(SearchListener);


}


   Button.OnClickListener SearchListener = new Button.OnClickListener() { //데이터 입력후 버튼 클릭시

public void onClick(View v) {

switch (v.getId()) {

case R.id.soap_btn

                                        String searchData = searchText.getText().toString(); 

    soapData(searchData); 

break;

}

}

};


    private void soapData(String searchData){//soap 통신 메소드 날려주고 데이터 받아옮

SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME);

   

SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet=true;

envelope.setOutputSoapObject(request);

request.addProperty("searchData" ,searchData);

HttpTransportSE androidHttpTransport=new HttpTransportSE(URL);

androidHttpTransport.debug = true;

try

{

androidHttpTransport.call(SOAP_ACTION, envelope);

SoapPrimitive result = (SoapPrimitive)envelope.getResponse();

 String result = xmlPasing(result.toString());  //xml파싱

                                 outPut.setText(result);  //결과값 출력

} catch(Exception e)

{

e.printStackTrace();

} //try-catch

}


    private String xmlPasing(String data){//데이터 파싱(콤마로 구분함)

String parsingData=null;


   try{

    XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();

    XmlPullParser parser = parserCreator.newPullParser();

    InputStream input = new ByteArrayInputStream(data.getBytes("UTF-8"));

    parser.setInput(input, "UTF-8");

   

    int parserEvent = parser.getEventType();      

    String tag;

    boolean inText = false;    


    while (parserEvent != XmlPullParser.END_DOCUMENT ){

     switch(parserEvent){

     case XmlPullParser.START_TAG:

                 tag = parser.getName();

                 if(tag.compareTo("NewDataSet")==0) {

                 inText=false;

                 }else if(tag.compareTo("Table")==0){

                 inText=false;

                 }else{

                 inText=true;

                 }

             break;

        case XmlPullParser.TEXT: 

        tag = parser.getName();

        if(inText){

        parsingData += parser.getText() + ","; 

     //데이터를 구분하기위해 콤마를 추가했습니다

        }

        inText=false;

       

        break;

               case XmlPullParser.END_TAG:

                 inText=false;

                break;        

              

    }

    parserEvent = parser.next();

    }

   }catch( Exception e ){

    Log.e("dd", "Error in network call", e);

   }

   return parsingData;

}


}

///////////////////////////////////////////////////////////////////////////////////


private static final String URL = "http://웹사이트 url/WebService.asmx";

- 이전 포스팅에서 웹서비스가 정상적으로 동작했던 url을 써주시면 됩니다.


parsingData += parser.getText() + ","; 

- 위예제는 콤마로 데이터를 구분했는데요... arraylist하나를  만들어서 열의 내용을 객체로 만들어서 

마지막 tag일때마다 arraylist에 추가해주시면 데이터 사용하시기 편리하실듯합니다..




서버 연동 모두 성공하시길빕니다!!