xXJohnRamboXx
xXJohnRamboXx

Reputation: 739

AsyncTask help me

i have this doInBackground() method in my AsyncTask:

protected String doInBackground(String... params) {

   try {

         if(!client.isConnected()){
                 client = new Socket("192.168.1.2", 4444);  
         }
         //client = new Socket("192.168.1.2", 4444); 
         oos = new ObjectOutputStream(client.getOutputStream());
         ois = new ObjectInputStream(client.getInputStream());

         oos.writeUTF("LOGIN");
         oos.flush();

         String emailText = email.getText().toString();
         oos.writeUTF(emailText);
         oos.flush();

         String passwordText = password.getText().toString();
         oos.writeUTF(passwordText);
         oos.flush();

         string = ois.readUTF();

   }catch (ConnectException e){
       return "Host not found";
   }catch (IOException e) {
       return "Exception Caught";
   }
   return null;
}

but when my app execute this method i get this error:

    06-06 11:29:29.224: E/AndroidRuntime(9071): FATAL EXCEPTION: AsyncTask #1
06-06 11:29:29.224: E/AndroidRuntime(9071): java.lang.RuntimeException: An error occured while executing doInBackground()
06-06 11:29:29.224: E/AndroidRuntime(9071):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.lang.Thread.run(Thread.java:841)
06-06 11:29:29.224: E/AndroidRuntime(9071): Caused by: java.lang.NullPointerException
06-06 11:29:29.224: E/AndroidRuntime(9071):     at com.example.social_network.Login$myTask.doInBackground(Login.java:50)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at com.example.social_network.Login$myTask.doInBackground(Login.java:1)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-06 11:29:29.224: E/AndroidRuntime(9071):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
06-06 11:29:29.224: E/AndroidRuntime(9071):     ... 4 more

and app crash. Server doesn't receive client connection What's wrong?

Upvotes: 0

Views: 73

Answers (1)

adboco
adboco

Reputation: 2870

Try to check if the socket is connected before create it again:

try {
    if(client == null) client = new Socket("192.168.1.2", 4444);
    else if(!client.isConnected())
         client = new Socket("192.168.1.2", 4444);  //connect to server
    }
...

And be sure that your socket doesn't have a small timeout.

Upvotes: 2

Related Questions