带有参数的Google App Engine ApiMethod不起作用

时间:2013-01-25 16:27:00

标签: java android api google-app-engine google-cloud-endpoints

到目前为止,我能够在Google找到我的问题的所有答案,但这次我放弃并创建了一个帐户...

我开始在Eclipse中使用GAE for Android应用程序,我正在编写API,当然还有ApiMethods。 我写的一个方法有一个返回值,但在客户端代码中它似乎是无效的 这是我正在尝试生成的非常有用的方法:

@ApiMethod(name = "weather.bla")
public double Bla(double d)
{
    return 2.5;
}

正如您所看到的,此方法获取一个double变量作为参数并返回一个double,但在客户端代码中,它似乎并不承认那些双精度。(它自动完成weather()。 bla()和.execute()方法是Void)
我甚至试图编辑生成的代码并在必要的地方添加双打,但是当我尝试运行应用程序时,它有点爆炸,没有“强制关闭”警报,没有警告,应用程序就消失了。

更奇怪的是,我在GAE代码上有一个名为“Weather”的类,使用Weather类的ApiMethods可以完美地生成。

我在这里错过了一些基本的东西吗?

1 个答案:

答案 0 :(得分:2)

您应该将Java Bean作为参数传递并返回类型。这将有效:

class Response {
  private Double d;

  // getter and setter
}

@ApiMethod(name = "weather.bla")
public Response Bla()
{
  Response r = new Response();
  r.setD(2.5)
  return r;
}

此例外是查询参数(作为API方法的参数)。如果使用@Named注释注释参数,则不再需要使用Java Bean(您可以使用DoubleStringLong等。例如:

@ApiMethod(name = "weather.bla")
public Response Bla(@Named("d") Double d)
{
  Response r = new Response();
  r.setD(d)
  return r;
}