【问题标题】:HTTP request to local server from Android device从 Android 设备到本地服务器的 HTTP 请求
【发布时间】:2016-01-04 13:28:53
【问题描述】:

我想通过 HTTP 请求从 Android 应用程序提供 RESTful 服务。为了开发,我在 eclipse 中设置了一个 Tomcat 服务器和一个 SQLite 数据库。从一个简单的 Java 客户端应用程序到 localhost:80 的 HTTP 请求工作正常:我可以验证新条目是否已添加到数据库中。

现在我想从 Android 应用发出这些 HTTP 请求,但我无法弄清楚为什么在我的设备上测试它时它不起作用。由于不推荐使用 Apache HTTPClient,我首先使用 HttpURLConnection 进行了尝试:

private void proceedSignup() {
    String domain = "http://10.0.2.2";
    String port = ":80";
    String urlString = domain + port + "/AppServer/register/doregister?login=android&firstName=vorn&secondName=nach";

    Log.d("DEBUG", "HTTP Request");
    HttpURLConnection urlConnection;
    try {
        URL url = new URL(urlString);
        urlConnection = (HttpURLConnection) url.openConnection();
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());
        String response = readStream(in);
        Log.d("DEBUG", response);
    } catch (Exception e ) {
        System.out.println(e.getMessage());
    }

    this.finish();
}

我还在清单文件中添加了这个必需的权限:

<uses-permission android:name="android.permission.INTERNET" />

响应字符串始终为空,但在成功的情况下应返回 JSON 结构。 请求不会通过 192.168.1.1 或 127.0.0.1 到达服务器并不奇怪,但是,它应该使用别名 10.0.0.2(请参阅here)。

我也尝试使用旧的 Apache HTTPClient,尽管它不应该对我使用哪个库有任何影响。然后我使用ngrok 在端口 80 处创建到我的本地主机的隧道。也没有帮助。

这可能与服务器配置有关,如this 帖子中所述?我的 Tomcat 服务器配置文件不包含任何特定的 IP,但是...

【问题讨论】:

  • "当我在我的设备上测试它时" -- 你是在设备上测试吗?您链接到的文档适用于模拟器。模拟器不是设备。
  • 你用的是模拟器还是手机?
  • 是的,我正在用 USB 调试在我的手机上进行测试。不幸的是,我无法让 Android 模拟器在我的计算机上运行。直到现在我才意识到链接的概览表只适用于模拟器。
  • 如果您使用模拟器,它适用于 10.0.2.2 ip!

标签: java android rest http tomcat


【解决方案1】:

我认为这个问题的发生是因为 Http Connection 没有与您的服务器成功建立。要成功设置本地服务器,您需要使用 Intranet 而不是 Intranet。您需要在您的设备和本地服务器之间建立 Intranet 连接。这将帮助您并使用您的 IP 地址与本地服务器建立连接。

【讨论】:

    【解决方案2】:

    在您的代码中,您有:

    String domain = "http://10.0.2.2";
    

    但是在你的描述中你提到了

    它应该与别名 10.0.0.2 一起使用

    你是不是打错IP了?

    【讨论】:

      猜你喜欢
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2019-04-19
      相关资源
      最近更新 更多