Me auto respondo...después de mucho dar vueltas he conseguido mantener una sesión con el servidor, no creo que sea la forma mas correcta de hacerlo pero de momento a mi me vale. Aquí os dejo el código por si alguien se topa con el mismo problema:
Código Java:
Ver originalpublic class Httppostaux{
SharedPreferences preferCookies;
public JSONArray getserverdata
(ArrayList
<NameValuePair
> parameters,
String urlwebserver,SharedPreferences preferens
){ //conecta via http y envia un post.
preferCookies=preferens;
httppostconnect(parameters, urlwebserver);
if (is!=null){//si obtuvo una respuesta
getpostresponse();
return getjsonarray();
}else{
return null;
}
}
//peticion HTTP
private void httppostconnect
(ArrayList
<NameValuePair
> parametros,
String urlwebserver
){
SharedPreferences.Editor editor = preferCookies.edit();
try{
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(urlwebserver);
httppost.setEntity(new UrlEncodedFormEntity(parametros));
//ejecuto peticion enviando datos por POST
HttpResponse response = httpclient.execute(httppost);
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
HttpEntity entity = response.getEntity();
if (cookies.isEmpty()) {
Log.d("login","No se recivieron cookies");
} else {
for (int i = 0; i < cookies.size(); i++) {
if (cookies.get(i).getName().contentEquals("cook_usu"))
{
editor.putString("cook_usu",cookies.get(i).getValue());
editor.putInt("version",cookies.get(i).getVersion());
editor.putString("domain",cookies.get(i).getDomain());
editor.putString("path",cookies.get(i).getPath());
editor.commit();
}
if(cookies.get(i).getName().contentEquals("PHPSESSID"))
{
editor.putString("PHPSESSID",cookies.get(i).getValue());
editor.commit();
//PHPSESSID = cookies.get(i).getValue();
}
}
}
is = entity.getContent();
Log.e("log_tag", "Error in http connection "+e.toString());
}
}
public void getpostresponse(){
//Convierte respuesta a String
try{
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
//devolvemos la respuesta del servidor
result=sb.toString();
Log.e("log_tag", "Error converting result "+e.toString());
}
}
public JSONArray getjsonarray(){
//parse json data
try{
JSONArray jArray = new JSONArray(result);
return jArray;
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
return null;
}
}
}
Esta es la clase con la que me logeo y luego si es correcto el login guardo las cookies en un SharedPreferences para asi poder mandar esos paramaetros en las posteriores peticiones al servidor. Como por ejemplo la siguiente:
aqui le paso por referencia el SharedPreferences declarado en el activity.para poder acceder a los paramatros de las cookeis
public class HttpGetAux {
{
try
{
String phpsessid
= MisPrefers.
getString("PHPSESSID",
""); String cook_usu
= MisPrefers.
getString("cook_usu",
""); int version = MisPrefers.getInt("version",0);
String domain
= MisPrefers.
getString("domain",
""); String path
= MisPrefers.
getString("path",
"");
DefaultHttpClient client = new DefaultHttpClient();
CookieStore cookieStore = new BasicCookieStore();
//Creamos dos variables BasicClientCookie y las rellenamos con nuestros parametros almacenados de las cookies
BasicClientCookie cookie1 = new BasicClientCookie("PHPSESSID", phpsessid);
cookie1.setVersion(version);
cookie1.setDomain(domain);
cookie1.setPath(path);
BasicClientCookie cookie2 = new BasicClientCookie("cook_usu",cook_usu);
cookie2.setVersion(version);
cookie2.setDomain(domain);
cookie2.setPath(path);
client.getCookieStore().addCookie(cookie1);
client.getCookieStore().addCookie(cookie2);
HttpGet request = new HttpGet();
request.setURI(new URI("http://" + url));
HttpResponse response = client.execute(request);
while ((line = in.readLine()) != null)
{
sb.append(line + NL);
}
in.close();
return sb.toString();
}
finally
{
if (in != null)
{
try
{
in.close();
}
{
e.printStackTrace();
}
}
}
}
}
Espero que a alguien le sirva, y si existe una forma mas correcta de hacerlo, por favor que lo publique.Gracias.