【问题标题】:java.lang.NullPointerException: println needs a message soapjava.lang.NullPointerException: println 需要消息soap
【发布时间】:2013-01-29 09:47:46
【问题描述】:

那是我的源代码,

private static final String URL = "http://footballpool.dataaccess.eu/data/info.wso";
private static final String NAME_SPACE = "http://footballpool.dataaccess.eu";
private static final String METHODE_NAME = "TopGoalScorers";
private static final String SOAP_ACTION = NAME_SPACE + "/" + METHODE_NAME;


SoapObject request = new SoapObject(NAME_SPACE, METHODE_NAME);

    request.addProperty("iTopN", 10);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER11);

    envelope.setOutputSoapObject(request);

    HttpTransportSE transporte = new HttpTransportSE(URL);


    SoapObject soapObject = null;
    try {
        transporte.call("http://footballpool.dataaccess.eu/data/info.wso/TopGoalScorers", envelope);

        soapObject = (SoapObject) envelope.getResponse();

    } catch (Exception e) {
        Log.e("Soap", e.getMessage());
    }

我给出了这个错误:

> 01-29 10:44:17.877: E/AndroidRuntime(10704): FATAL EXCEPTION: main
01-29 10:44:17.877: E/AndroidRuntime(10704): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.serviosweb/com.android.serviosweb.MainActivity}: java.lang.NullPointerException: println needs a message
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.os.Looper.loop(Looper.java:137)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.ActivityThread.main(ActivityThread.java:5039)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at java.lang.reflect.Method.invokeNative(Native Method)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at java.lang.reflect.Method.invoke(Method.java:511)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at dalvik.system.NativeStart.main(Native Method)
01-29 10:44:17.877: E/AndroidRuntime(10704): Caused by: java.lang.NullPointerException: println needs a message
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.util.Log.println_native(Native Method)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.util.Log.e(Log.java:231)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at com.android.serviosweb.MainActivity.onCreate(MainActivity.java:44)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.Activity.performCreate(Activity.java:5104)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-29 10:44:17.877: E/AndroidRuntime(10704):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-29 10:44:17.877: E/AndroidRuntime(10704):    ... 11 more

请大家帮帮我

【问题讨论】:

    标签: java android soap httptransportse


    【解决方案1】:

    在 catch 语句中使用:

    String errorMessage = (ex.getMessage()==null)?"Message is empty":ex.getMessage();
    Log.e("Message:",errorMessage );  
    

    【讨论】:

      【解决方案2】:

      在catch中,使用:

      String err = (ex.getMessage()==null)?"SD Card failed":ex.getMessage();
      Log.e("sdcard-err2:",err);  
      

      【讨论】:

        【解决方案3】:

        你的问题很简单。在您的 try 块中抛出了一个异常。 Catch-Block 现在尝试通过将异常消息打印到您的日志来处理这些异常。您想要打印的消息可能未设置,并且您的 Logger(sys.out.print) 无法打印任何内容(空值)。

        只要您想像 Mohamed_AbdAllah 建议的那样打印 StackTrace。您需要获取 StackTrace 作为 String Guava 和 Apache Commons 有用于这些目的的方法。一个简单的构建方式是:

        StackTraceElement[] stack = e.getStackTrace();
        StringTrace = "";
        for(StackTraceElement line : stack)
        {
           Trace += line.toString();
        }
        
            Log.e("Soap",Trace);
        

        【讨论】:

        • 谢谢,结果是:[Ljava.lang.StackTraceElement;@41501db8
        • 我更新了我原来的答案。
        • 谢谢,错误太大了,发在这里dropbox.com/s/amhi1zn0korxu6a/error.txt
        • 现在,你正面临一个不同的错误,你真正的错误。我不在 Android 中,但我认为这可能是答案Link to StackOverflow
        【解决方案4】:

        使用此代码:(例如)

                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        
                PropertyInfo username = new PropertyInfo();
                username.setName("username");
                username.setValue("google");
                username.setType(String.class);
                username.setNamespace(NAMESPACE);
                request.addProperty(username);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-01
          • 1970-01-01
          • 2021-03-29
          • 1970-01-01
          • 1970-01-01
          • 2011-05-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多