java - 从 Android 设备到本地服务器的 HTTP 请求

标签 java android rest http tomcat

我想通过 HTTP 请求从 Android 应用程序提供 RESTful 服务。为了进行开发,我在 eclipse 和 SQLite 数据库中设置了一个 Tomcat 服务器。从一个简单的 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();
}

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

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

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

我还尝试使用遗留的 Apache HTTPClient,尽管我使用哪个库应该没有任何区别。然后我用了 ngrok在 80 端口创建到我的本地主机的隧道。也没有帮助。

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

最佳答案

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

关于java - 从 Android 设备到本地服务器的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34592284/

相关文章:

java - UniObjects for Java : How to get response String when error occurred in UniCommand. exec()

android - 使用 TabLayout 添加 fragment 时的 Material Design 高程问题

android - 布局溢出组件

android - 如何从 Adapter 返回回调到 Fragment 类

java - Jersey REST : Importing headers from a Map into a WebResource instance

rest - 为不受支持的 PATCH 返回的 HTTP 代码

java - CursorLoader 不刷新数据

java - 如何让标 checkout 现在面板中?

java - 线程中的异常 "main"递归中的 java.lang.StackOverflowError

java - 使用 Spring MVC 管理 REST 响应