Google app engine 如何从移动设备访问本地云端点API

Google app engine 如何从移动设备访问本地云端点API,google-app-engine,google-cloud-endpoints,Google App Engine,Google Cloud Endpoints,我想从运行在我用于测试的移动设备上的Android应用程序访问托管在本地开发机器上的云端点API 我的设备可以通过IP地址访问我的开发设备。我将--host=192.1.168.101传递给App Engine启动器,以便本地App Engine实例绑定到IP地址。虽然我可以从192.168.1.101访问App Engine实例,但当我的应用程序进行API调用时,我会得到404 我注意到去http://192.168.1.101:9080/_ah/api/explorer/不显示我的API;它

我想从运行在我用于测试的移动设备上的Android应用程序访问托管在本地开发机器上的云端点API

我的设备可以通过IP地址访问我的开发设备。我将--host=192.1.168.101传递给App Engine启动器,以便本地App Engine实例绑定到IP地址。虽然我可以从192.168.1.101访问App Engine实例,但当我的应用程序进行API调用时,我会得到404

我注意到去
http://192.168.1.101:9080/_ah/api/explorer/
不显示我的API;它重定向到
https://developers.google.com/apis-explorer/#p/
。如果我使用
http://localhost:9080/_ah/api/explorer/
我可以按预期查看我的API。使用IP地址作为主机似乎不适用于云端点

我不希望通过根目录更改设备的/etc/hosts文件。无论如何,改变这一点可能不是一个解决方案,因为我无法将我的应用程序引擎实例绑定到本地主机以外的主机名

这是我的app.yaml配置:

application: my-server
version: 1
runtime: python27
threadsafe: true
api_version: 1

handlers:
# Endpoints handler
- url: /_ah/spi/.*
  script: services.application

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

在生成的源代码中(通常是以API名称命名的文件,例如),
DEFAULT\u ROOT\u URL
应设置为
http://192.168.1.101:9080/_ah/api/
。如果将此URL加载到浏览器中,则不希望它提供任何有用的内容。相反,它是API请求路径的基础,例如
http://192.168.1.101:9080/_ah/api/tictactoe/v1/board

如果要确认设备已正确连接到本地服务器(通过本地网络),请加载
http://192.168.1.101:9080/_ah/api/explorer/
从设备浏览器。

您已绑定到特定IP,但作为提醒,您也可以绑定到0.0.0.0(所有可用IP)。如果您使用的是maven appengine插件,并且不想在IP发生更改时更新pom.xml文件,那么这将非常方便

接下来,确保您位于同一网络上,并且可以在机器之间进行连接。我通常使用ConnectBot来测试,方法是打开一个telnet会话,连接到您为本地运行而定义的IP地址和端口。这将确保您的防火墙不会导致问题

最后,通过调整API的根url来更新代码。如果您的IP地址为192.168.1.100,端口为8080,则看起来像这样:

Helloworld.Builder helloWorld = new Helloworld.Builder(AppConstants.HTTP_TRANSPORT,
    AppConstants.JSON_FACTORY, credential);
helloWorld.setRootUrl("http://192.168.1.100:8080/_ah/api/");

这个问题与IP地址无关。我需要在API方法装饰器中包含一个路径:

@endpoints.method(HelloRequest, HelloResponse, name='helloworld', path='test', http_method='GET')
    def helloworld(self, request):

将不会显示我的API——它只是重定向到。如果我使用,我可以看到我的API刚刚好。这是虫子吗?对我不起作用。我有@ApiMethod(name=“listMedia”,path=“listMediaFiles”)。。并且总是将我重定向到developers.google.com/api explorer/#p,你确定这与IP地址无关吗?