Android:与localhost网站的HTTP连接

时间:2014-09-26 06:52:41

标签: android http

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

我已经看到我们确实可以通过它的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类,我无法看到如何在URL请求中传输主机名时提供真实的IP地址。

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

这可能吗?


编辑:

在发表评论之后,我需要让事情变得更加清晰。

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

2 个答案:

答案 0 :(得分:0)

我认为你不这样做,除非你修改Android设备中的主机文件(具有root权限)

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

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

答案 1 :(得分:0)

这是一个解决方案,我希望能避免一些无用的东西&#34;将头撞在墙上&#34;对于那些可能有同样需求的人。

需要两到三个步骤。

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

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

第二步:告诉你的服务器,我的情况下是apache,听取它的IP地址。

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

    听[我的IP地址]:80

第3步:编码连接

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

// 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 - 可以节省数小时的想知道为什么它不起作用!