2009-12-31 12 views
8

Necesito escribir una aplicación que envíe datos a Google App Engine desde Android. Los datos que me gustaría enviar se pueden describir mediante un registro de base de datos típico. Cada registro tiene enteros, cadenas, fechas, etc. Me gustaría mantener los detalles de conexión ocultos/asegurados para que alguien no pueda crear datos falsos en el almacén de datos, si no es demasiado complicado.¿Cómo enviar datos desde dispositivos móviles Android al almacén de datos de Google App Engine?

Mi pregunta es: ¿cuál es una buena forma de obtener esta información de los dispositivos Android en el almacén de datos de GAE? Si pudieras publicar un enlace a las bibliotecas apropiadas de Android, o un enlace a cómo se ha hecho esto en el pasado, eso sería realmente útil.

Respuesta

4

Sí, solo envíe una publicación http. Aquí hay un fragmento de código que utilicé y que funcionó bien en Android.

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.ByteArrayEntity; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.params.BasicHttpParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 

    try { 
     int TIMEOUT_MILLISEC = 10000; // = 10 seconds 
     HttpParams httpParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParams, 
                TIMEOUT_MILLISEC); 
     HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC); 
     HttpClient client = new DefaultHttpClient(httpParams); 

     HttpPost request = new HttpPost(serverUrl); 
     request.setEntity(new ByteArrayEntity(
      postMessage.toString().getBytes("UTF8"))); 

     HttpResponse response = client.execute(request); 
    } catch (Exception e) { 
     .... 
    } 
6

Nada específico de Android sobre esto: simplemente envíe un HTTP POST a una URL servida por GAE que aceptará la solicitud, la procesará y almacenará sus datos. No hay "Android-GAE" royal road - POST es la forma normal de realizar esto, quienquiera que lo envíe, ¡quienquiera que lo esté sirviendo!

+0

Bien, pero ¿cómo lo mantendría oculto, para que alguien no pueda inyectar datos falsos en mi almacén de datos? ¿Los POST de HTTP no son fáciles de ver y, por lo tanto, fáciles de recrear de manera falsa? Lo siento, soy un novato en esto. – Doughy

+2

Siempre debe suponer que alguien puede espiar los datos que su programa envía al servidor y volver a crear los datos falsos. No hay forma de enviar datos que lo impidan, porque toda la información necesaria para hacer la conexión está en el cliente, que usted no controla. Para evitar datos falsos, necesita autenticar al usuario. Haga que inicien sesión y obtengan un token. Eso no impedirá que alguien cargue datos falsos como usuario registrado. Tienes que manejar eso en el lado del servidor. – dmazzoni

Cuestiones relacionadas