我想在我的 android studio (v3.3) 项目中使用 Google Cloud Endpoint v2 连接到 App Engine(最终连接到 Google Cloud sql(不是 firebase,因为我将进行复杂的查询))。
Google Cloud SDK、OpenAPI、端点配置正在运行(它可以通过 Windows PowerShell 接收回声“hello world”),并且我按照本教程构建了客户端库:https://cloud.google.com/endpoints/docs/frameworks/java/gen_clients
我已将客户端库导入到 Android Studio 项目文件 Libs 中,目前正在按照本教程从 Android Studio 客户端调用后端 API: https://cloud.google.com/endpoints/docs/frameworks/java/calling-from-android
编辑 gradle 文件后,建议将下面代码中的“Tictactoe”替换为您的后端 API 的名称
Tictactoe.Builder builder = new Tictactoe.Builder(
AndroidHttp.newCompatibleTransport(), new GsonFactory(), null);
service = builder.build();
我花了 8 个小时试图弄清楚那会是什么。我在导入的库中找不到任何有效的文件。我尝试过单独使用我的 Google Cloud 项目 ID 或后跟 .appspot.com,但没有任何效果。
我认为它一定在我的项目文件中的某个地方,我只需要知道在哪里。而且不知道它叫什么,搜索起来就很棘手。
注意:Google Cloud 网站建议在 stackoverflow 上询问技术问题
最佳答案
此名称来自配置 Endpoints API 时设置的多个 @Api
注释。听起来您可能是从 appengine-java8/endpoints-v2-backend 开始的。示例,其声明如下:
@Api(
name = "echo",
version = "v1",
namespace =
@ApiNamespace(
ownerDomain = "echo.example.com",
ownerName = "echo.example.com",
packagePath = ""
),
...
您可以在 Echo.java 中查看完整定义.
这里需要注意的重要事项是 name
字段和 namespace
中的 ownerDomain
。这两者一起用于生成代码所属的 Java 包,但 ownerDomain
路径的段是相反的(正如 Java 包中的标准,它以相反的方式表示层次结构)正常 DNS 段),因此 Java 包最终为 com.example.echo.echo。 Java 类只是以 @Api.name
字段(大写)命名,因此类名就是 Echo
。
因此,您正在寻找的完全限定的 Java 类是:
com.example.echo.echo.Echo
或者,对于您的确切代码 fragment :
com.example.echo.echo.Echo.Builder
这可能会令人困惑,因为此示例多次使用“echo”一词,很难确定每个单独的 echo
来自何处,但这里是另一个示例:
假设您将 @Api.name
设置为 myApiName
,然后将 @Api.namespace.ownerDomain
设置为 mycompany。 com
。您将从生成的客户端库中使用的完全限定的 Java 类是:
com.mycompany.myApiName.MyApiName
但是,我不建议您尝试根据这些规则手动找出 Java 包和类名。更简单的事情就是查看 Endpoints 生成的客户端库。
当您运行 gradle endpointsClientLibs
时,该命令会将其生成的文件的位置输出为 .zip
文件。您所要做的就是解压缩此文件并探索其中生成的所有代码,以便轻松查看 Java 包结构,甚至是 Endpoints 为您生成的确切类定义。
如果您在 IDE 中找不到这些类,我想知道您是否可能不小心错过了 Generating a client library 中的步骤 4-7。说明:
4) Unzip the file using the unzip utility, or use another ZIP-compatible unarchiving utility:
unzip ./echo-v1-java.zip
5) Change directory: cd echo.
6) Build the client library:
gradle build
The output is in the `build/libs` directory. The exact filename depends on the version of the Java client. It is something like echo-v1-1.23.0-SNAPSHOT.jar.
7) Add the client library JAR to your Java or Android app.
关于java - 我的后端 API 名称是什么?它在哪里?从 Android Studio 客户端调用 Google Cloud 端点后端 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54568055/