簡體   English   中英

在android應用程序中連接到主機名而不是IP地址

[英]Connect to host name instead of IP address in android app

我正在構建一個連接到我的筆記本電腦上的后端服務的 android 應用程序。 它連接到從 JSON 獲取數據的本地主機地址。

當我在代碼中寫入筆記本電腦的 IP 地址時,它可以正常工作。 此 IP 地址可以更改,因此我想使用似乎不起作用的主機名。

private static final String URLLocalhost = "http://localhost:8081/" ; // 不起作用
private static final String URLPCName = "http://PCNAME:8081/" ; // 不起作用
private static final String URLIPAddress = "http://192.168.xy:8081/" ; // 有效,但需要修改IP

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

當它不起作用時,我收到多個ECONNREFUSED錯誤。
它不會很快公開,所以我沒有一個 URL。

我為此找到了一些解決方案,但它們需要對我的設備進行更改。 (沒試過)

  • 更改 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尊重該路由對於無線,我發現它不是(可能是這個Android錯誤 )。

可能更容易通過構建參數或在構建中具有用於調試和生產設置的配置文件。 另一個簡單的解決方法是使用DHCP保留為筆記本電腦保留靜態IP,或者僅手動指定IP。

我有同樣的問題。 你有沒有解決辦法。 似乎android不是通過服務器主機名連接到網絡,而是可以通過直接IP地址連接。

請告知您是否可以管理。 謝謝..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM