GAE远程API - 无法连接

时间:2015-01-04 19:41:35

标签: java google-app-engine google-cloud-datastore

好的,我尝试连接到远程数据存储区失败,并使用此处列出的步骤从本地计算机填充:https://cloud.google.com/appengine/docs/java/tools/remoteapi#Configuring_Remote_API_on_the_Client

public static void main(String[] args) {

    String username = "myemail@gmail.com";
    String password = "mygmailpassword";
    RemoteApiOptions options = new RemoteApiOptions()
        .server("myappname.appspot.com", 443)
        .credentials(username, password);
    RemoteApiInstaller installer = new RemoteApiInstaller();
    installer.install(options);

    try {       
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
        ...

我在installer.install(选项)中获得了404: java.io.IOException:无法从远程api获取appId;状态代码= 404 我在这里错过了什么吗?我在web.xml中启用了远程api并部署到GAE。我是该项目的所有者。

2 个答案:

答案 0 :(得分:2)

在本地运行您的服务(启用远程api)并尝试使用' localhost'运行相同的代码。和8888(端口)并检查您的代码是否可以访问本地运行的服务。你的代码似乎是对的。有两种可能性 - 1.未正确启用RemoteApi。 2. app-name拼写错误。

除此之外,我还使用以下代码来访问远程api-

        installer.install(options);
        try {
            // Update the options with reusable credentials so we can skip
            // authentication on subsequent calls.
            options.reuseCredentials(username, installer.serializeCredentials());
        } finally {
            installer.uninstall();
        }

但是,这不应该给你带来的错误。

答案 1 :(得分:1)

我意识到这有点晚了,但我在google搜索时发现了这个,因为我遇到了类似的问题,而且我自己解决了这个问题。对我来说问题是,我服务远程API的AppEngine应用程序是一个python应用程序,而python docs指示将远程api端点配置为/ remoteapi。*

但是我的远程api客户端是一个java应用程序,显然是它所做的远程api调用,它会转到这样的endpoit:/ remote_api。因此,将其添加到服务器路由配置(在我的情况下为app.yaml)解决了这个问题。另请注意,如果您的远程api服务appengine应用程序不在默认模块中,则网址应为 my-module-name -dot- my-project .appspot.com的

此外,您应该使用useApplicationDefaultCredential()而不是credentials(),不推荐使用它。