2014-03-27 6 views
0

내 프로젝트를 에뮬레이터에서 내 프로젝트를 실행하려고하면 다음과 같은 코드가 생깁니다. 다음과 같은 오류가 발생합니다. "불행히도 앱이 작동을 멈췄습니다." 내 logcat은 아래와 같습니다. 이 오류를 푸는데 나를 도와주세요. 여기ksoap2를 사용하여 안드로이드에서 asmx 웹 서비스에 액세스

package com.example.abc; 

import android.os.Bundle; 
import android.app.Activity; 

import android.widget.Button; 
import android.widget.TextView; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapPrimitive; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 


public class MainActivity extends Activity { 

    private static final String SOAP_ACTION = "http://tempuri.org/hello"; 
    private static final String METHOD_NAME = "hello"; 
    private static final String NAMESPACE = "http://tempuri.org/"; 
    private static final String URL = "http://127.0.0.1:80/WEBSITE/Webservice.asmx"; 
    TextView tv; 
    Button btn; 
    TextView tv1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tv = (TextView) findViewById(R.id.lblView); 

     try{ 
      //Request 
      SoapObject Request = new SoapObject(NAMESPACE,METHOD_NAME); 
      Request.addProperty("abc","Rajax"); 

      SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      soapEnvelope.dotNet=true; 
      soapEnvelope.setOutputSoapObject(Request); 

      HttpTransportSE aht = new HttpTransportSE(URL); 
      aht.call(SOAP_ACTION, soapEnvelope); 
      SoapPrimitive resultString=(SoapPrimitive)soapEnvelope.getResponse(); 
      //display1.setText(resultString.toString()); 
      tv.setText("Status : "+resultString.toString()); 
     } 
     catch(Exception e) 
     { 
      tv.setText(e.getMessage()); 

     } 
    } 
} 

"ksoap2 - 안드로이드 - 조립 2.4 단지 -에 - dependencies.jar"사용하고 여기에 내 XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/txtName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:ems="10" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/btnInvoke" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/txtName" 
     android:layout_below="@+id/txtName" 
     android:text="Invoke" /> 

    <TextView 
     android:id="@+id/lblView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/btnInvoke" 
     android:layout_below="@+id/btnInvoke" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</RelativeLayout> 

내 매니페스트

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.abc" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.abc.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

입니다 여기 내 로그캣입니다

03-26 23:56:34.949: E/dalvikvm(816): Could not find class 'org.ksoap2.serialization.SoapObject', referenced from method com.example.abc.MainActivity.onCreate 
03-26 23:56:34.949: W/dalvikvm(816): VFY: unable to resolve new-instance 729 (Lorg/ksoap2/serialization/SoapObject;) in Lcom/example/abc/MainActivity; 
03-26 23:56:34.970: D/dalvikvm(816): VFY: replacing opcode 0x22 at 0x0013 
03-26 23:56:34.990: D/dalvikvm(816): DexOpt: unable to opt direct call 0x12d2 at 0x19 in Lcom/example/abc/MainActivity;.onCreate 
03-26 23:56:35.010: D/dalvikvm(816): DexOpt: unable to opt direct call 0x12d5 at 0x27 in Lcom/example/abc/MainActivity;.onCreate 
03-26 23:56:35.029: D/dalvikvm(816): DexOpt: unable to opt direct call 0x12d8 at 0x34 in Lcom/example/abc/MainActivity;.onCreate 
03-26 23:56:36.630: D/AndroidRuntime(816): Shutting down VM 
03-26 23:56:36.630: W/dalvikvm(816): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 
03-26 23:56:36.731: E/AndroidRuntime(816): FATAL EXCEPTION: main 
03-26 23:56:36.731: E/AndroidRuntime(816): java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject 
03-26 23:56:36.731: E/AndroidRuntime(816): at com.example.abc.MainActivity.onCreate(MainActivity.java:34) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.Activity.performCreate(Activity.java:5133) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.os.Looper.loop(Looper.java:137) 
03-26 23:56:36.731: E/AndroidRuntime(816): at android.app.ActivityThread.main(ActivityThread.java:5103) 
03-26 23:56:36.731: E/AndroidRuntime(816): at java.lang.reflect.Method.invokeNative(Native Method) 
03-26 23:56:36.731: E/AndroidRuntime(816): at java.lang.reflect.Method.invoke(Method.java:525) 
03-26 23:56:36.731: E/AndroidRuntime(816): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
03-26 23:56:36.731: E/AndroidRuntime(816): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
03-26 23:56:36.731: E/AndroidRuntime(816): at dalvik.system.NativeStart.main(Native Method) 
03-27 00:15:25.310: E/dalvikvm(850): Could not find class 'org.ksoap2.serialization.SoapObject', referenced from method com.example.abc.MainActivity.onCreate 
03-27 00:15:25.310: W/dalvikvm(850): VFY: unable to resolve new-instance 729 (Lorg/ksoap2/serialization/SoapObject;) in Lcom/example/abc/MainActivity; 
03-27 00:15:25.310: D/dalvikvm(850): VFY: replacing opcode 0x22 at 0x0013 
03-27 00:15:25.350: D/dalvikvm(850): DexOpt: unable to opt direct call 0x12d2 at 0x19 in Lcom/example/abc/MainActivity;.onCreate 
03-27 00:15:25.350: D/dalvikvm(850): DexOpt: unable to opt direct call 0x12d5 at 0x27 in Lcom/example/abc/MainActivity;.onCreate 
03-27 00:15:25.400: D/dalvikvm(850): DexOpt: unable to opt direct call 0x12d8 at 0x34 in Lcom/example/abc/MainActivity;.onCreate 
03-27 00:15:26.050: D/AndroidRuntime(850): Shutting down VM 
03-27 00:15:26.050: W/dalvikvm(850): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 
03-27 00:15:26.070: E/AndroidRuntime(850): FATAL EXCEPTION: main 
03-27 00:15:26.070: E/AndroidRuntime(850): java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject 
03-27 00:15:26.070: E/AndroidRuntime(850): at com.example.abc.MainActivity.onCreate(MainActivity.java:34) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.Activity.performCreate(Activity.java:5133) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.os.Looper.loop(Looper.java:137) 
03-27 00:15:26.070: E/AndroidRuntime(850): at android.app.ActivityThread.main(ActivityThread.java:5103) 
03-27 00:15:26.070: E/AndroidRuntime(850): at java.lang.reflect.Method.invokeNative(Native Method) 
03-27 00:15:26.070: E/AndroidRuntime(850): at java.lang.reflect.Method.invoke(Method.java:525) 
03-27 00:15:26.070: E/AndroidRuntime(850): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
03-27 00:15:26.070: E/AndroidRuntime(850): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
03-27 00:15:26.070: E/AndroidRuntime(850): at dalvik.system.NativeStart.main(Native Method) 
+1

그런데, 당신은 좋은 생각이 아닌 UI 스레드에서 네트워크를하고 있습니다. 네트워크 연산을 위해'AsyncTask' 또는'Handler'를 사용하십시오. 자세한 내용은 [this] (http://developer.android.com/training/basics/network-ops/connecting.html)을 읽어보십시오. –

답변

1

빌드 경로를 확인하고 jar 파일이 점검되었는지 확인하십시오.

0

네트워크의 메인 스레드. 임시 해결책은 이것을 코드에 추가합니다. 좋은 연습은 아니지만 이것은 잘 될 것입니다.

StrictMode.ThreadPolicy tp = StrictMode.ThreadPolicy.LAX; 
     StrictMode.setThreadPolicy(tp);