Android和App Engine如何实际通信?

Android和App Engine如何实际通信?,第1张

概述好吧,这可能看起来像一个愚蠢的问题,但我在云计算/谷歌应用引擎等方面真的很新.为了更熟悉它,我开始使用来自developers.google.com的一些教程,基本上遵循教程,然后尝试对提供的代码片段进行小的更改,以确保我真正了解它的工作方式,而不仅仅是复制/粘贴并将一切视为理所当然. 问题是我在以下方面遇到了一些困难:Android和App Engine实际通信的方式.我目前正在做这个教程( h 好吧,这可能看起来像一个愚蠢的问题,但我在云计算/谷歌应用引擎等方面真的很新.为了更熟悉它,我开始使用来自developers.Google.com的一些教程,基本上遵循教程,然后尝试对提供的代码片段进行小的更改,以确保我真正了解它的工作方式,而不仅仅是复制/粘贴并将一切视为理所当然.

问题是我在以下方面遇到了一些困难:Android和App Engine实际通信的方式.我目前正在做这个教程(
https://developers.google.com/eclipse/docs/endpoints-addentities).问题是以下一段代码(客户端,在AndroID上):

public class EndpointsTask extends AsyncTask<Context,Integer,Long> {    protected Long doInBackground(Context... contexts) {           Noteendpoint.Builder endpointBuilder = new Noteendpoint.Builder(          AndroIDhttp.newCompatibleTransport(),new JacksonFactory(),new httpRequestinitializer() {          public voID initialize(httpRequest httpRequest) { }          });  Noteendpoint endpoint = CloudEndpointUtils.updateBuilder(  endpointBuilder).build();  try {      Note note = new Note().setDescription("Note Description");      String noteID = new Date().toString();      note.setID(noteID);      note.setEmailAddress("E-Mail Address");                Note result = endpoint.insertNote(note).execute();  } catch (IOException e) {    e.printstacktrace();  }      return (long) 0;    }}

就我的理解而言,就目前而言,在云计算方面,我推断AndroID和云之间的通信是通过端点对象执行的,其中端点是:

Noteendpoint endpoint = CloudEndpointUtils.updateBuilder (endpointBuilder).build();

此外,updateBuilder()方法如下所示:

public static <B extends AbstractGoogleClIEnt.Builder> B updateBuilder(  B builder) {if (LOCAL_ANDROID_RUN) {  builder.setRootUrl(LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID      + "/_ah/API/");}// only enable GZip when connecting to Remote Serverfinal boolean enableGZip = builder.getRootUrl().startsWith("https:");builder.setGoogleClIEntRequestinitializer(new GoogleClIEntRequestinitializer() {  public voID initialize(AbstractGoogleClIEntRequest<?> request)      throws IOException {    if (!enableGZip) {      request.setdisableGZipContent(true);    }  }});return builder;

}

我确实理解数据存储中的插入是通过insertNote()执行的 – 基本上,它执行基本的标准插入方法.

我的问题是,我无法真正理解在云端,从我的AndroID设备发送的信息被捕获的位置.更具体地说,我发送一个对象,我无法真正看到云中接收到该对象的位置.可能在这种基本应用程序中,并不相关,但我想开发一个具有以下结构的应用程序:我使用REST从我的AndroID设备发送数据.我正在开发我的服务器端代码)(它将在云端).在我的服务器端代码将接收我从AndroID发送的数据 – >处理该数据 – >在数据库中添加一些东西(存储在云中的数据库)(这是用非常原始术语解释的基本原理).这就是为什么我真的想了解它的工作方式,到目前为止,我真的看不到我的数据在服务器端收到的位置.我假设这背后可能有一些自动机制?如果是这样,我真的很感兴趣,如果你能指出我,我怎么能以编程方式做到这一点.

另外,我想提一下这段代码非常好用,所以没有错误,我只是在理解与之相关的所有细节方面遇到了问题.

谢谢.

后期编辑:
我的数据库将是App Engine数据存储区.主要的问题是,我无法真正理解我的AndroID应用程序和Google App Engine应用程序之间的通信方式(我将使用从AndroID收到的数据进行所有必要的计算).我真的可以使用一个更“明显”/解释(用于傻瓜)的代码片段,我实际上看到我从AndroID发送的对象是在Google App Engine应用程序中收到的.当然,我使用数据存储查看器看到了结果,它显示数据已插入数据库中.我感兴趣的是我如何实际发送我的Google App Engine应用程序中的数据,在那里接收数据并对其执行一些 *** 作,并且仅在我将其添加到数据库中之后.

解决方法 updateBuilder()方法不在服务器端.它是androID代码的一部分. CloudEndpointUtils是androID的一部分.它是您创建的用于处理样板代码的类,因此您不必在每次需要访问服务器时键入它.你看到了代码

Noteendpoint.Builder endpointBuilder = new Noteendpoint.Builder(      AndroIDhttp.newCompatibleTransport(),new httpRequestinitializer() {      public voID initialize(httpRequest httpRequest) { }      });

它假设您的API被称为Noteendpoint,并且您正在“构建”一个对象来访问它.您可以调用endpointBuilder.build()来开始查询您的API.如果仔细查看CloudEndpointUtils.updateBuilder方法,您将看到它正在执行的 *** 作是将调用重定向到localhost而不是在appengine上部署的代码.

如果您需要澄清,请告诉我.

回答你的编辑:

请忘记这是一个Google端点应用程序.您基本上是在设计一个系统,它接受输入,处理输入,然后将结果保存到数据库.

现在让我们假装输入来自终端或文件或调用API端点无关紧要.你绝对必须做的是创建一个层来 *** 纵数据,然后将数据传递给持久层(即数据库).所以你需要(仍然忽略所有Google / appengine):

> JPA实体(仅包含getter和setter的POJO以及JPA注释)
>数据访问层:这是一个具有在JPA POJO上执行查询的方法的类(使用EntityManagerFactory).
>业务层:这是一个 *** 作您收到的数据的类,然后将结果传递给数据访问层.

因此,您有业务逻辑层=>数据访问层=> JPA POJO.所以尽量不要担心它是否会在你当地的玻璃鱼或任何地方运行.

完成后,将端点注释添加到业务层方法中.这些注释基本上意味着在您生成AndroID端点库之后,您的androID将能够调用您的业务层方法,就像它们在您的AndroID应用程序代码中一样.

你懂了?就好像你的androID和你的服务器就是一个.您是否在此项目中使用Google Eclipse插件?

总结

以上是内存溢出为你收集整理的Android和App Engine如何实际通信?全部内容,希望文章能够帮你解决Android和App Engine如何实际通信?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存