Определите исходный IP-адрес с помощью Apache HttpClient - PullRequest
1 голос
/ 21 ноября 2011

Я работаю над проектом, который имеет следующую потребность:

  • использовать исходный IP-адрес A для доступа к службе http S на удаленном сервере XX.YY.ZZ.WW
  • использовать исходный IP-адрес B для доступа к службе http T на удаленном сервере XX.YY.ZZ.WW (как указано выше)

XX.YY.ZZ.WW - хост, который я не могу контролировать.

Мой сервер настроен с IP A и IP B на одном и том же интерфейсе Ethernet. Мой проект использует Apache HttpClient. При необходимости его можно заменить на другое.

Исходя из моих знаний по TCP / IP, это очень просто. Пока у меня есть IP, я могу сменить исходный IP-адрес на любой, какой захочу. Но в конце концов, я не манипулирую IP-пакетами напрямую. И я понятия не имею, как это можно сделать с помощью HttpClient.

Ответы [ 2 ]

6 голосов
/ 29 ноября 2013
final DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
params.setParameter(ConnRoutePNames.LOCAL_ADDRESS, InetAddress.getByName(IP_ADDRESS));
5 голосов
/ 21 ноября 2011

Вам просто нужно указать HttpClient, какой сетевой интерфейс использовать. Вы можете сделать это с помощью свойства подключения:

ConnRoutePNames.LOCAL_ADDRESS='ADDRESS A';

Ознакомьтесь с разделом 2.4 документов для полного описания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...