好的,我尝试连接到远程数据存储区失败,并使用此处列出的步骤从本地计算机填充: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。我是该项目的所有者。
答案 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(),不推荐使用它。