【问题标题】:Android: HTTP connection to localhost web siteAndroid:到本地主机网站的 HTTP 连接
【发布时间】:2014-09-26 06:52:41
【问题描述】:

我正在开发一个平板电脑应用程序,它需要连接到一个网站来收集在线内容。

我已经看到,我们确实可以通过 IP 地址寻址来连接到本地系统上的 Web 服务器。

但是,我在我的系统上使用虚拟主机,以便使用虚拟域。

这是在我的系统上的 apache httpd-vhosts.conf 文件中设置的,如下所示 -

#
# Project wordpress dev site
#
<VirtualHost *:80>
    DocumentRoot "C:/web/www/boutique"
    ServerName boutique.project.dev
</VirtualHost>

我的主机文件具有以下条目

127.0.0.1        boutique.project.dev        # project woocommerce site

我正在使用 HttpPostHttpClient 类,但我看不到如何在提供真实 IP 地址的同时仍在 URL 请求中传输主机名。

那么,我需要知道如何使用虚拟地址" boutique.project.dev " 从我的应用程序中进行查询?

这可能吗?


编辑:

根据一条评论,我需要让事情更清楚。

我想在 代码 中执行此操作。每次我们连接到站点时,URL 都会进行 DNS 查找以确定要使用的 IP 地址。我需要拦截它并提供我本地系统的 IP 地址。我已经看到了一些使用HttpHost 的代理示例,但我不清楚如何使用它,或者它是否相关。

【问题讨论】:

    标签: android http


    【解决方案1】:

    我认为除非您在 android 设备中修改主机文件(具有 root 权限),否则您不会这样做

    这是一个类似的问题:Apache Virtual Host (Subdomain) access with different computer on LAN

    您还可以在您的计算机中设置 DNS 服务器(即 bind9)并为您的 apache 虚拟主机设置条目并配置 android 以使用该 DNS 服务器。

    【讨论】:

    • 因为每次与 URL 建立连接时,都会有一个返回相应 IP 地址的 DNS 查找,我正在寻找在我的代码中覆盖 DNS 查找的方法,而不是更改平板电脑设置。我将编辑我的问题以使其更清晰。
    【解决方案2】:

    以下是解决方案,我希望可以避免对可能有同样需求的人进行一些无用的“头撞墙”。

    需要两三个步骤。

    第一步:打开防火墙以允许连接。

    • 这显然是必要的,否则无论您做什么,都不会建立连接。我使用 Comodo,因此我在防火墙中添加了一条规则,允许所有来自本地 LAN 的连接。

    第二步:告诉你的服务器,在我的例子中是 apache,监听它的 IP 地址。

    • 我在httpd.conf 文件中添加了以下条目:

      听[我的ip地址]:80

    第三步:编码连接

    让它工作的关键是告诉你需要哪个虚拟服务器。所以,没有更多无聊的细节,这里是代码:

    // setup the needed objects
    HttpClient client = new DefaultHttpClient();
    // create the request using the IP address of the server machine
    HttpGet request = new HttpGet("http://[target ip address]:80/testpage.php");
    // here is the code magic - manually set the host header
    request.setHeader(HttpHeaders.HOST, "boutique.project.dev");
    // now execute the request
    HttpResponse response = client.execute(request);
    // read back the response as normal
    ....
    

    结果是apache服务器将请求映射到虚拟主机。

    我希望这对其他人有用!


    哦,我差点忘了,别忘了在平板电脑上启用 WiFi - 可以节省数小时想知道为什么它不起作用的时间!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2020-09-04
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多