2011-07-19 50 views
0

我在使用kso​​ap通過android調用webservice時遇到問題。如果minSdkVersion =「11」,那麼我得到一個異常,你可以在下面看到。但如果我將minSdkVersion屬性的值設置爲9或以下,則可以調用web服務。 ksoap和minsdkversion有什麼問題?請幫助我,我該怎麼辦?Android上的ksoap和minSdkVersion =「11」

ps:現在我要開發一個應用程序,它將在平板電腦(蜂窩)上運行。而我的目標API級別已經設置好的爲11

編輯:我使用kso​​ap2-機器人組裝-2.4-JAR-與依賴性

07-19 11:16:03.604: ERROR/AndroidRuntime(782): FATAL EXCEPTION: main 
07-19 11:16:03.604: ERROR/AndroidRuntime(782): android.os.NetworkOnMainThreadException 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:368) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:208) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at java.net.Socket.connect(Socket.java:901) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:217) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:46) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:68) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at com.quadro.main.Soap.AndSoap.CallService(AndSoap.java:40) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at com.quadro.main.Login.onClick(Login.java:27) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.view.View.performClick(View.java:3100) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.view.View$PerformClick.run(View.java:11644) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.os.Handler.handleCallback(Handler.java:587) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.os.Looper.loop(Looper.java:126) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at java.lang.reflect.Method.invoke(Method.java:491) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
07-19 11:16:03.604: ERROR/AndroidRuntime(782):  at dalvik.system.NativeStart.main(Native Method) 

回答

0

要調用網絡操作(主用戶界面線程上的webservice通過ksoap)。在api級別11以下,這不再被允許/可能。無論如何,這樣做是非常糟糕的做法,因爲在網絡操作正在進行時掛起UI。

使用AsyncTask並在那裏調用web服務。順便說一句。這與ksoap完全無關......任何網絡操作都會遇到這個問題。

此外,您應該升級到最新版本的ksoap2-android我剛剛發佈。 2.4.0很老,有很多問題。