gpt4 book ai didi

java - 在 Android 应用程序中连接到主机名而不是 IP 地址

转载 作者:行者123 更新时间:2023-12-01 12:14:24 26 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,它连接到我的笔记本电脑上的后端服务。它连接到本地主机地址,从 JSON 获取数据。

当我在代码中写入笔记本电脑的 IP 地址时,它可以正常工作。该 IP 地址可能会更改,因此我想使用似乎不起作用的主机名。

private static final String URLLocalhost = "http://localhost:8081/"; // doesn't work
private static final String URLPCName = "http://PCNAME:8081/"; // doesn't work
private static final String URLIPAddress = "http://192.168.x.y:8081/"; // works but IP needs to be modified

@Override
public List<Spike> getSpikes() {
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(URLPCName).build();

当它不起作用时,我收到多个 ECONNREFUSED 错误。
它不会很快公开,所以我没有相应的 URL。

我找到了some solutions为此,但他们需要对我的设备进行更改。 (没试过)

  • 更改 DNS 设置
  • 编辑主机文件

我希望任何设备(可能仅限于本地 WiFi)访问此服务,而无需更改设备中的设置。

如何使用我的代码中的主机名进行连接?

<小时/>

相关问题,没有解决我的问题:How to connect my android app to the remote web server

最佳答案

是的,AIUI,这正如预期的那样。 localhost 指的是 Android 设备正在使用的适配器,因此会将请求路由到手机本身(因此会失败)。

原始 IP 工作正常,因为它在不同设备上都是明确的。

http://PCNAME:8081/ 在一定程度上取决于 PCNAME 这里的名称类型以及您的笔记本电脑运行的是什么。如果这是一个 Windows 机器名称(使用 WINS ),那么默认情况下它在 Android/Linux 上不起作用。切换到 FQDN,例如PCNAME.subdomain.mydomain.org 应该可以工作,但这依赖于您的 DHCP 路由器(或您想要避免的 Android 中的手动网络设置)在未指定时搜索该域,并且 Android 尊重该域无线路由,我发现它没有(可能 this Android bug )。

可能更容易让它传递构建参数,或者在构建中拥有用于调试和生产设置的配置文件。另一个简单的解决方法是使用 DHCP 保留为您的笔记本电脑保留静态 IP,或者手动指定 IP。

关于java - 在 Android 应用程序中连接到主机名而不是 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com