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
-~----------~----~----~----~------~----~------~--~---