我正在开发一个平板电脑应用程序,需要连接到网站来收集在线内容。
我已经看到我们确实可以通过它的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
我正在使用HttpPost
和HttpClient
类,我无法看到如何在URL请求中传输主机名时提供真实的IP地址。
那么,我需要知道的是如何使用虚拟地址" boutique.project.dev "
从我的应用程序中进行查询?
这可能吗?
编辑:
在发表评论之后,我需要让事情变得更加清晰。
我想在代码中执行此操作。每次我们建立到站点的连接时,URL都会执行DNS查找以确定要使用的IP地址。我需要拦截这个并提供我本地系统的IP地址。我已经看到代理使用HttpHost
的一些示例,但我不知道如何使用它,或者即使它是相关的。
答案 0 :(得分:0)
我认为你不这样做,除非你修改Android设备中的主机文件(具有root权限)
这是一个类似的问题:Apache Virtual Host (Subdomain) access with different computer on LAN
您还可以在计算机中设置DNS服务器(即bind9)并设置apache虚拟主机的条目并配置android以使用该DNS服务器。
答案 1 :(得分:0)
这是一个解决方案,我希望能避免一些无用的东西&#34;将头撞在墙上&#34;对于那些可能有同样需求的人。
需要两到三个步骤。
第1步:打开防火墙以允许连接。
第二步:告诉你的服务器,我的情况下是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 - 可以节省数小时的想知道为什么它不起作用!