0

我正在使用 ksoap2 webservices,当我尝试登录我的应用程序一段时间后,我得到了异常,当我尝试登录我的应用程序一段时间后,这个异常引发了..

我的日志猫:

01-20 12:04:40.669: E/AndroidRuntime(5805): FATAL EXCEPTION: AsyncTask #3
01-20 12:04:40.669: E/AndroidRuntime(5805): java.lang.RuntimeException: An  error occured while executing doInBackground()
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at  java.lang.Thread.run(Thread.java:841)
01-20 12:04:40.669: E/AndroidRuntime(5805): Caused by:  java.lang.RuntimeException: Can't create handler inside thread that has not  called Looper.prepare()
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.os.Handler.<init>  (Handler.java:197)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.os.Handler.<init>(Handler.java:111)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.widget.Toast$TN.<init>(Toast.java:324)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.widget.Toast.   <init>(Toast.java:91)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at  android.widget.Toast.makeText(Toast.java:238)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at  com.ufone.ufoneselfcare.MainActivity$AsyncCallWS.doInBackground(MainActivity.java:274)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at c om.ufone.ufoneselfcare.MainActivity$AsyncCallWS.doInBackground(MainActivity.java:1)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-20 12:04:40.669: E/AndroidRuntime(5805):     at  java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-20 12:04:40.669: E/AndroidRuntime(5805):     ... 4 more
01-20 12:04:41.369: E/WindowManager(5805): Activity   com.ufone.ufoneselfcare.MainActivity has leaked window   com.android.internal.policy.impl.PhoneWindow$DecorView{419047a0 V.E.....   R......D 0,0-258,175} that was originally added here
01-20 12:04:41.369: E/WindowManager(5805): android.view.WindowLeaked:  Activity com.ufone.ufoneselfcare.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{419047a0 V.E.....  R......D 0,0-258,175} that was originally added here
01-20 12:04:41.369: E/WindowManager(5805):  at  android.view.ViewRootImpl. <init>(ViewRootImpl.java:345)
01-20 12:04:41.369: E/WindowManager(5805):  at  android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
01-20 12:04:41.369: E/WindowManager(5805):  at  android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
01-20 12:04:41.369: E/WindowManager(5805):  at android.app.Dialog.show(Dialog.java:281)
01-20 12:04:41.369: E/WindowManager(5805):  at  com.ufone.ufoneselfcare.MainActivity$AsyncCallWS.onPreExecute(MainActivity.java:328)
01-20 12:04:41.369: E/WindowManager(5805):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
01-20 12:04:41.369: E/WindowManager(5805):  at android.os.AsyncTask.execute(AsyncTask.java:534)
01-20 12:04:41.369: E/WindowManager(5805):  at  com.ufone.ufoneselfcare.MainActivity.loginAction(MainActivity.java:208)
01-20 12:04:41.369: E/WindowManager(5805):  at com.ufone.ufoneselfcare.MainActivity.access$0(MainActivity.java:167)
01-20 12:04:41.369: E/WindowManager(5805):  at com.ufone.ufoneselfcare.MainActivity$2.onClick(MainActivity.java:134)
01-20 12:04:41.369: E/WindowManager(5805):  at android.view.View.performClick(View.java:4240)
01-20 12:04:41.369: E/WindowManager(5805):  at android.view.View$PerformClick.run(View.java:17739)
01-20 12:04:41.369: E/WindowManager(5805):  at android.os.Handler.handleCallback(Handler.java:730)
01-20 12:04:41.369: E/WindowManager(5805):  at android.os.Handler.dispatchMessage(Handler.java:92)
01-20 12:04:41.369: E/WindowManager(5805):  at android.os.Looper.loop(Looper.java:137)
01-20 12:04:41.369: E/WindowManager(5805):  at  android.app.ActivityThread.main(ActivityThread.java:5140)
01-20 12:04:41.369: E/WindowManager(5805):  at  java.lang.reflect.Method.invokeNative(Native Method)
01-20 12:04:41.369: E/WindowManager(5805):  at  java.lang.reflect.Method.invoke(Method.java:525)
01-20 12:04:41.369: E/WindowManager(5805):  at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-20 12:04:41.369: E/WindowManager(5805):  at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-20 12:04:41.369: E/WindowManager(5805):  at     dalvik.system.NativeStart.main(Native Method)

这是我的异步任务类:

private class AsyncCallWS extends AsyncTask<String, Void, Void> {
    @Override
    protected Void doInBackground(String... params) {

        try {

            envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            envelope.dotNet = true;
            Log.d("SelfCare", "request= " + request);
            androidHttpTransport = new HttpTransportSE(URL);
            Log.d("SelfCare", "androidHttpTransport= "
                    + androidHttpTransport);

            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
            Log.d("SelfCare", "response= " + response);
            /*
             * Toast.makeText(getApplicationContext(), "Response= " +
             * response, Toast.LENGTH_LONG).show();
             */
            String jsonResponse = "";
            jsonResponse = response.toString();

            // A JSONTokener is needed in order to use JSONObject correctly
            JSONTokener jsonTokener = new JSONTokener(jsonResponse);
            // Pass a JSONTokener to the JSONObject constructor
            JSONObject jsonObj = new JSONObject(jsonTokener);
            JSONArray data = jsonObj.getJSONArray("data");

            if (data != null) {

                // looping through All nodes
                for (int i = 0; i < data.length(); i++) {
                    JSONObject c = data.getJSONObject(i);
                    message = c.getString("message");
                    sessionid = c.getInt("sessionid");
                    saleid = c.getInt("saleid");
                    name = c.getString("name");
                    email = c.getString("email");
                    defaultmsisdn = c.getString("defaultmsisdn");

                    Log.d("SelfCare", "message= " + message);
                    Log.d("SelfCare", "sessionid= " + sessionid);

                }

                /*
                 * Toast.makeText(getBaseContext(), "Success",
                 * Toast.LENGTH_LONG).show();
                 */

            } else {
                Toast.makeText(getBaseContext(), "Error", Toast.LENGTH_LONG)
                        .show();
            }

            /*TextView results = (TextView) findViewById(R.id.login_error);
            results.setText(response.toString());*/

        } catch (Exception e) {
            //alertDialog(e.toString());
            Toast.makeText(getApplicationContext(), e.getMessage(),
                    Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // Log.i(TAG, "onPostExecute");
        // tv.setText(fahren + "° F");

        pDialog.dismiss();
        if (message.equalsIgnoreCase("Login Successful.")) {
            if (defaultmsisdn.equalsIgnoreCase("null") && saleid == 0) {
                et_username.setText("");
                et_password.setText("");
                Intent intent = new Intent(getApplicationContext(),
                        AssociateMsisdn.class);
                intent.putExtra("username", username);
                intent.putExtra("sessionid", sessionid);
                intent.putExtra("name", name);
                intent.putExtra("email", email);
                startActivity(intent);
            //alertDialog("Open the Associate MSISDN Class.");
            } else {
                et_username.setText("");
                et_password.setText("");
                Intent intent = new Intent(getApplicationContext(),
                        MainMenu.class);
                intent.putExtra("name", name);
                intent.putExtra("username", username);
                intent.putExtra("defaultmsisdn", defaultmsisdn);
                intent.putExtra("sessionid", sessionid);
                intent.putExtra("saleid", saleid);
                intent.putExtra("email", email);

                startActivity(intent);
            }
        } else {
            alertDialog(message);
            // Toast.makeText(getApplicationContext(), "" +message ,
            // Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onPreExecute() {
        // Log.i(TAG, "onPreExecute");
        // tv.setText("Calculating...");
        // pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Loading ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        // Log.i(TAG, "onProgressUpdate");
    }

}

这就是我得到异常的那一行::

androidHttpTransport.call(SOAP_ACTION, envelope);

注意:-我不经常收到异常,但是当我尝试登录我的应用程序和调试我的应用程序时的另一件事,然后在我的 catch 块中会出现此消息java.net.sockettimeoutexception

4

0 回答 0