I can return an ArrayList of Strings just not an ArrayList of my Stop object. And since this whole process works fine when I take android out of the equation..this leads me to believe that serialization is handled slightly differently in android. Anybody?
On Oct 12, 6:28 pm, dsukhram <[email protected]> wrote: > I am writing an android client app which sends a Hashtable to a remote > servlet and recieves an ArrayList consisting of a custom Object which > is serializable. This ran fine when I was just receiving the > ArrayList from a java console app. So I know my objects are being > serialized and deserialized properly. But when I port the same client > code over to android I get an error when trying to read the ArrayList > of my objects that is sent back from the servlet. > > Is there any differences in the way Android does serialization? I > can't seem to find any documentation that says it does. The error I > receive is: > > java.lang.IndexOutOfBoundsException: Invalid location > > at java.util.ArrayList.get(ArrayList.java:350) > > ============ My Android Client app is as > follows================================= > > public class TTCPointService { > private Logger logger; > private FileHandler handler; > > public TTCPointService(){ > > try > { > logger = > Logger.getLogger(TTCPointService.class.getName()); > handler = new FileHandler("ttcservice.log"); > handler.setFormatter(new SimpleFormatter()); > logger.addHandler(handler); > } > catch(IOException e) > { > logger.log(Level.SEVERE,e.toString()); > } > } > > public ArrayList<Stop> ConnectToServlet() > { > ArrayList<Stop> list = new ArrayList<Stop>(); > > Hashtable<String, String>obj = new Hashtable<String,String>(); > obj.put("lat", "12.00"); > obj.put("log", "-23.00"); > > try > { > URL servletURL = new URL("http://192.168.0.69:8080/ > GTFSProcessor/TTCPoints"); > HttpURLConnection servletConnection = (HttpURLConnection) > servletURL.openConnection(); > servletConnection.setDoOutput(true); > servletConnection.setDoInput(true); > servletConnection.setUseCaches(false); > servletConnection.setDefaultUseCaches(false); > > servletConnection.setRequestProperty("Content- > type","application/x-java-serialized-object"); > servletConnection.setRequestMethod("POST"); > logger.log(Level.INFO,"Connecting to Servlet"); > > //Send object to servlet > OutputStream os = servletConnection.getOutputStream(); > ObjectOutputStream oos = new ObjectOutputStream(os); > oos.writeObject(obj); > > oos.flush(); > oos.close(); > logger.log(Level.INFO,"Hashtable sent to Servlet"); > > //Read from servlet > InputStream is = servletConnection.getInputStream(); > ObjectInputStream ois = new ObjectInputStream(is); > > list = (ArrayList<Stop>)ois.readObject(); > logger.log(Level.INFO,"Reading Object from Servlet"); > > os.close(); > > } > catch(IOException e) > { > logger.log(Level.SEVERE,e.toString()); > } > catch(ClassNotFoundException e) > { > logger.log(Level.SEVERE,e.toString()); > } > return(list); > } > > } > > =============The code that raises the error > is=================================== > > ArrayList<Stop> list = new ArrayList<Stop>(); > TTCPointService service = new TTCPointService(); > list = (ArrayList<Stop>)service.ConnectToServlet(); > > Toast.makeText(mapView.getContext(), "list contains: > "+list.get(0).getName(), Toast.LENGTH_SHORT).show(); --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

