如何将数据从Android移动设备发送到Google App Engine数据存储区?

Dou*_*ghy 8 google-app-engine android google-cloud-datastore

我需要编写一个从Android向Google App Engine发送数据的应用程序.我想发送的数据可以通过典型的数据库记录来描述.每个记录都有一些整数,字符串,日期等.我希望隐藏/保护连接细节,以便有人不能在数据存储区中创建错误数据,如果它不太参与.

我的问题是:将这些数据从Android设备传输到GAE数据存储区的好方法是什么?如果您可以发布指向相应Android库的链接,或者指向过去如何完成此操作的链接,那将非常有用.

Ale*_*lli 6

没有针对此的Android特定内容 - 只需将HTTP发送POST到GAE服务的URL,该URL将接受请求,处理请求并存储您的数据.没有"Android-GAE" royal road- POST只是执行此操作的正常方式,无论是谁发送它,无论是谁服务它!

  • 您应该始终假设有人可以窃听您的程序发送到服务器的数据并重新创建错误数据.无法发送阻止此操作的数据,因为建立连接所需的所有信息都在客户端上,而您无法控制.为避免错误数据,您需要对用户进行身份验证.让他们登录并获取令牌.这仍然不会阻止某人将虚假数据作为登录用户上传.你必须在服务器端处理它. (2认同)

dma*_*oni 4

是的,只需发送一个 http 帖子即可。这是我使用的一些代码片段,在 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) {
        ....
    }
Run Code Online (Sandbox Code Playgroud)