외부 DB 연동 할려고 하는데 앞전에 질문을 올려서 소스를 다 입력하고  에뮤레이터로 실행 해보니  첫화면(입력화면)은 뜨는데 입력하고 확인을 누르면 Unfortunately, SoapExample has stypped. 오류가 뜹니다.

대체 어디가 잘못 된건지 알수가 없어요 ..

asmx 파일은 잘 작동을 하거든요 ..

 

아래 소스 참고 하시고 답변 좀 부탁드립니다 ..

 

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

SoapExample.java

 

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;
 
    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){
     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 result1 = xmlPasing(result.toString());
      outPut.setText(result1);
     } catch(Exception e){
      e.printStackTrace();
     }
    }
   
    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;
    }
}

 

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

App_Code / badfood.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// WebService의 요약 설명입니다.
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다.
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

    private string connect = @"data source=(local); initial catalog=; user id=; password=";
    public WebService () {

        //디자인된 구성 요소를 사용하는 경우 다음 줄의 주석 처리를 제거합니다.
        //InitializeComponent();
    }

    [WebMethod]
    public string Response_SearchData(string searchData) {
        String strResponse;

        SqlConnection con = new SqlConnection(connect);

        string sqlwhere = "Name like '%" + searchData + "%'";
        string sql = "SELECT [Name], [Date], [Tel] FROM Table_Name where " + sqlwhere;

        DataSet ds = new DataSet();
        strResponse = "";

        try
        {
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            da.Fill(ds);

            strResponse = ds.GetXml();
        }
        catch (SqlException ex)
        {
            strResponse = "Error:" + ex.ToString();
        }
        catch (Exception ex)
        {
            strResponse = "Error:" + ex.ToString();
        }
        finally
        {
            if (con.State == System.Data.ConnectionState.Open){
                con.Close();
            }
        }
        return strResponse;
    }
   
}

 

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

로그 안의 익셉션 부분입니다.

 

06-14 00:04:12.728: E/AndroidRuntime(664): FATAL EXCEPTION: main
06-14 00:04:12.728: E/AndroidRuntime(664): java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
06-14 00:04:12.728: E/AndroidRuntime(664):  at exam.SoapExample.SoapExample.soapData(SoapExample.java:49)
06-14 00:04:12.728: E/AndroidRuntime(664):  at exam.SoapExample.SoapExample.access$0(SoapExample.java:48)
06-14 00:04:12.728: E/AndroidRuntime(664):  at exam.SoapExample.SoapExample$1.onClick(SoapExample.java:42)
06-14 00:04:12.728: E/AndroidRuntime(664):  at android.view.View.performClick(View.java:3511)
06-14 00:04:12.728: E/AndroidRuntime(664):  at android.view.View$PerformClick.run(View.java:14105)
06-14 00:04:12.728: E/AndroidRuntime(664):  at android.os.Handler.handleCallback(Handler.java:605)
06-14 00:04:12.728: E/AndroidRuntime(664):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-14 00:04:12.728: E/AndroidRuntime(664):  at android.os.Looper.loop(Looper.java:137)
06-14 00:04:12.728: E/AndroidRuntime(664):  at android.app.ActivityThread.main(ActivityThread.java:4424)
06-14 00:04:12.728: E/AndroidRuntime(664):  at java.lang.reflect.Method.invokeNative(Native Method)
06-14 00:04:12.728: E/AndroidRuntime(664):  at java.lang.reflect.Method.invoke(Method.java:511)
06-14 00:04:12.728: E/AndroidRuntime(664):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-14 00:04:12.728: E/AndroidRuntime(664):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-14 00:04:12.728: E/AndroidRuntime(664):  at dalvik.system.NativeStart.main(Native Method)