6

我一直在关注从 Android 项目创建端点后端中的教程。一切都在编译中,看起来很有希望。后端起来了。

CloudEndpointUtils#LOCAL_ANDROID_RUN改为true. 但是当我尝试在真实设备(不是模拟器)上测试应用程序时,我失败了:

java.net.SocketException: failed to connect to /10.0.2.2 (port 8888) after 20000ms: isConnected failed: EHOSTUNREACH (No route to host)

因此,我查看CloudEndpointUtils并看到该设置LOCAL_ANDROID_RUN使true应用程序在 中查找 DevAppServer http://10.0.2.2:8888,这是模拟器虚拟路由器。

但我没有使用模拟器。因此,我尝试将保持此 url 的常量更改为http://127.0.0.1:8888/但仍然没有运气。我现在失败了:

java.net.ConnectException: failed to connect to /127.0.0.1 (port 8888) after 20000ms: isConnected failed: ECONNREFUSED (Connection refused)

我认为这可能是因为我的电脑在防火墙后面,所以我禁用了它,但仍然没有。

任何建议将不胜感激。

4

7 回答 7

12

如果您想在 Android Studio 中执行此操作,请在 build.gradle 中按如下方式设置 httpAddress

appengine {

  ...

  httpAddress = "0.0.0.0"
}
于 2015-04-19T05:32:27.840 回答
7

要做到这一点

  1. 把 LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID = 你的 IP 地址(这是在你的 android 应用程序中)
  2. 右键单击 App-Engine 项目 -> 运行 -> 运行配置 -> Web 应用程序(左栏​​) -> 您的 app-engine 项目。

2.(续)转到 Arugments -> 完全像这样添加

--address=0.0.0.0 --port=.......

*要获取您的 IP 地址,请在步骤 1 中转到 cmd -> ipconfig -> add (IPV4 address with port number)

重要提示:如果您从加密狗或某些动态 IP 互联网服务访问互联网,请每次更改此设置

谢谢......这完美无缺

于 2014-03-26T20:03:26.933 回答
6

这里有很多答案,但我发现它们很乱或不完整。要在您的计算机上运行本地服务器并使用真实设备进行测试,请执行以下操作:

1)添加httpAddress = "0.0.0.0"到后端(Google Cloud Endpoint)模块文件中的appengine块,如下所示:build.gradle

appengine {
    ...
    httpAddress = "0.0.0.0"
}

根据对该问题的评论,这意味着“将在任何地方接受”。

2)在本地运行您的后端模块(即启动网络服务器)。这很简单:在下拉菜单中选择后端配置,然后按绿色按钮。您可以在此处找到更详细的说明

您现在应该可以打开浏览器(在您的计算机上)并导航到http://localhost:8080/并查看带有“Hello,Endpoints!”的网页。和许多其他的东西。

3) 找到您计算机的 IP 地址(在 Mac 上转到系统偏好设置 -> 网络),然后在您的 Android 应用程序代码中将其设置为根 url,如下所示:

MyApi.Builder builder = new MyApi.Builder(
                            AndroidHttp.newCompatibleTransport(),
                            new AndroidJsonFactory(), 
                            null
).setRootUrl("http://192.168.1.36:8080/_ah/api/")

就这样!

于 2016-08-25T17:30:06.330 回答
1

从无 localhost 地址本地测试 Google 云端点时,--address="0.0.0.0" 设置可能不够。

从非本地主机访问时,我的端点出现 404 Not Found 错误。我通过在API 装饰中包含路径参数来解决它。

我的 API 注释如下所示:

@ApiMethod(name="saveResponse", httpMethod = "post", path="saveResponse)
public Response saveResponse(@Named("answerString") String responseString)
于 2014-12-01T10:38:50.373 回答
0

添加

--address="0.0.0.0" 

作为应用引擎服务器地址参数接受来自所有传入连接。

于 2013-07-31T17:59:29.323 回答
0

按照 user248187 的 2. 点帖子 2.(续)转到 Arugments -> 完全像这样添加 --address=0.0.0.0 --port=.......

现在,在客户端 android 代码上,您需要将服务的请求 IP (RootURL) 更改为本地 IP。您可以通过使用 builder.setRootUrl() 来做到这一点。最好在你的 android 客户端上添加一个 flat 用于 outomatice,然后它可以在本地和部署的 app-engiene 之间快速切换。如:

//........................

private boolean mFlatLocalHostServer=true;  
private static final String LOCAL_IP = "192.168.1.11"; //Ip debug server
public static final String  LOCAL_SERVER_IP = "http://"+LOCAL_IP+":8888/_ah/api";
//......................
Mydataendpoint.Builder builder = new Mydataendpoint.Builder(
                                AndroidHttp.newCompatibleTransport(),
                                new GsonFactory(),
                                        mCredential); 

//request the  service to local ip 
if(mFlatLocalHostServer){
         builder.setRootUrl(LOCAL_SERVER_IP); 
}

Mydataendpoint service =  builder.build();
response=service.insertMyData(mydata).execute(); 
于 2014-07-16T21:33:25.770 回答
-2

地址10.0.2.2用于使用模拟器访问 localhost,要使用真机访问 localhost,请使用以下步骤

-打开你的命令行 (cmd) 运行 ipconfig。-获取您计算机的IP地址并用它替换10.0.2.2 ,-在您的设备上构建并运行。

希望这可以帮助某人

于 2016-04-19T05:27:27.487 回答