2014-09-26 2 views
2

Я разрабатываю приложение для планшетов, которое необходимо подключить к веб-сайту для сбора онлайн-контента.Android: HTTP-подключение к локальному веб-сайту

Я видел, что мы действительно можем подключиться к веб-серверу в локальной системе, обратившись к нему через его IP-адрес.

Однако, я использую виртуальные хосты в своей системе, чтобы использовать виртуальные домены.

Это установка на моей системе в файле апач 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 классов и I не может видеть, как я могу предоставить реальный IP-адрес, все еще передавая имя хоста в запросе URL.

Итак, мне нужно знать, как я могу делать запросы из своего приложения, используя виртуальный адрес " boutique.project.dev "?

Возможно ли это?


Edit:

После одного комментария, мне нужно, чтобы сделать вещи более ясными.

Я хочу сделать это в код. Каждый раз, когда мы делаем соединение с сайтом, URL-адрес выполняет поиск DNS для определения используемого IP-адреса. Мне нужно перехватить это и предоставить IP-адрес моей локальной системы. Я видел несколько примеров использования прокси-сервера HttpHost, но я не понимаю, как это использовать или даже если это актуально.

ответ

0

Вот решение, которое, я надеюсь, позволит избежать некоторых бесполезных «ударов головой о стену» для тех из вас, кто может иметь такую ​​же потребность.

Требуются два или три шага.

1-й шаг: откройте межсетевой экран для подключения.

  • Это, очевидно, необходимо или иначе, независимо от того, что вы сделаете, соединение не будет выполнено. Я использую Comodo, поэтому я добавил правило в брандмауэре, разрешающее все подключения, поступающие из локальной локальной сети.

2-й шаг: Расскажите своему серверу, 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 будет отображать запрос виртуального хоста.

Я надеюсь, что это будет полезно для других здесь!


О, я почти забыл, не забудьте включить Wi-Fi на планшете - можно сэкономить часы интересно, почему это не работает!

0

Я думаю, что вы не делаете, что если вы не измените хост-файл в устройстве Android (с корневыми правами)

Это аналогичный вопрос: Apache Virtual Host (Subdomain) access with different computer on LAN

Вы также можете настроить сервер DNS на компьютере (т.е. bind9) и установить записи для вашего apache virtualhost и настроить Android для использования этого DNS-сервера.

+0

Как каждый раз при подключении к URL-адресу происходит поиск DNS, который возвращает соответствующий IP-адрес, я ищу способы переопределить поиск DNS в моем коде, в отличие от изменения настройки планшета. Я отредактирую свой вопрос, чтобы сделать это более понятным. – Simon

Смежные вопросы