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에 추가해주시면 데이터 사용하시기 편리하실듯합니다..
서버 연동 모두 성공하시길빕니다!!
'안드로이드' 카테고리의 다른 글
CallLog(최근전화기록) 삭제 방법 (0) | 2012.09.21 |
---|---|
WebView 에서 이미지 여백 없이 나오게 하는 방법 (1) | 2012.09.21 |
blob 이미지 insert, select 방법 (0) | 2012.06.14 |
android:id (0) | 2012.05.23 |
Android , asp.net, mssql 연동 [1] (0) | 2012.05.18 |