如果结果为null在调用Web服务后,应用程序意外关闭

问题描述

| 我在程序中使用以下几行来调用Web服务并获取结果 一切都很好,但是如果网页上没有内容,则任何时候它都为空或空白,则应用程序会意外关闭。
       1) SoapPrimitive result=null;
       2) androidHttpTransport.call(SOAP_ACTION,envelope);
           //upto this line program run smoothly
       3) result = (SoapPrimitive)envelope.getResponse();
请给我建议,我该如何处理,因为我只能在3行完成后检查结果值,但是在3号行完成之前会发生错误。 我也检查了信封值,但它不是null 等待回复 启动此活动后,这是我的LogCat
04-14 07:05:48.209: INFO/ActivityManager(68): Starting: Intent { cmp=infogile.mogilePPR/.VoucherType (has extras) } from pid 434
**04-14 07:05:48.309: DEBUG/envelope---(434): not null**
04-14 07:05:48.639: DEBUG/in catch-->(434): java.lang.ClassCastException: org.ksoap2.serialization.SoapObject
04-14 07:05:48.639: DEBUG/in catch 2-->(434): org.ksoap2.serialization.SoapObject
04-14 07:05:48.649: DEBUG/AndroidRuntime(434): Shutting down VM
04-14 07:05:48.649: WARN/dalvikvm(434): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-14 07:05:48.691: ERROR/AndroidRuntime(434): FATAL EXCEPTION: main
04-14 07:05:48.691: ERROR/AndroidRuntime(434): java.lang.RuntimeException: Unable to start activity ComponentInfo{infogile.mogilePPR/infogile.mogilePPR.VoucherType}: java.lang.NullPointerException
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.os.Looper.loop(Looper.java:123)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.ActivityThread.main(ActivityThread.java:3647)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at java.lang.reflect.Method.invokeNative(Native Method)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at java.lang.reflect.Method.invoke(Method.java:507)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at dalvik.system.NativeStart.main(Native Method)
04-14 07:05:48.691: ERROR/AndroidRuntime(434): Caused by: java.lang.NullPointerException
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at infogile.mogilePPR.VoucherType.onCreate(VoucherType.java:37)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
04-14 07:05:48.691: ERROR/AndroidRuntime(434):     ... 11 more
04-14 07:05:48.719: WARN/ActivityManager(68):   Force finishing activity infogile.mogilePPR/.VoucherType
04-14 07:05:48.759: WARN/ActivityManager(68):   Force finishing activity infogile.mogilePPR/.ServiceProvider
04-14 07:05:49.269: WARN/ActivityManager(68): Activity pause timeout for HistoryRecord{4060df30 infogile.mogilePPR/.VoucherType}
04-14 07:05:51.049: INFO/Process(434): Sending signal. PID: 434 SIG: 9
04-14 07:05:51.079: INFO/ActivityManager(68): Process infogile.mogilePPR (pid 434) has died.
04-14 07:05:51.099: ERROR/InputDispatcher(68): channel \'406eb210 infogile.mogilePPR/infogile.mogilePPR.ServiceProvider (server)\' ~ Consumer closed input channel or an error occurred.  events=0x8
04-14 07:05:51.109: ERROR/InputDispatcher(68): channel \'406eb210 infogile.mogilePPR/infogile.mogilePPR.ServiceProvider (server)\' ~ Channel is unrecoverably broken and will be disposed!
04-14 07:05:51.199: INFO/WindowManager(68): WIN DEATH: Window{406e4ff0 infogile.mogilePPR/infogile.mogilePPR.LoginScreen paused=false}
04-14 07:05:51.339: INFO/WindowManager(68): WIN DEATH: Window{406eb210 infogile.mogilePPR/infogile.mogilePPR.ServiceProvider paused=true}
04-14 07:05:51.429: ERROR/InputDispatcher(68): Received spurious receive callback for unknown input channel.  fd=165,events=0x8
04-14 07:05:51.810: WARN/InputManagerService(68): Got RemoteException sending setActive(false) notification to pid 434 uid 10034
04-14 07:05:52.139: WARN/NotificationService(68): Object died trying to hide notification android.app.ITransientNotification$Stub$Proxy@406fef38 in package infogile.mogilePPR
04-14 07:05:52.139: WARN/ActivityManager(68): setProcessForeground called on unknown pid: 434
    

解决方法

您可以在第3行之前检查它是否为null,就像这样
SoapPrimitive result=null;
androidHttpTransport.call(SOAP_ACTION,envelope);
// Check the response is not null before you cast it

if (envelope.getResponse() != null) {
    result = (SoapPrimitive)envelope.getResponse();
} else {
    // uh oh response is null
}
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...