使用Apache HttpClient定义源IP地址

时间:2011-11-21 14:51:23

标签: java http httpclient

我正在开展一个有以下需求的项目:

  • 使用源IP地址A访问远程服务器XX.YY.ZZ.WW上的http服务S.
  • 使用源IP地址B访问远程服务器XX.YY.ZZ.WW上的http服务T(与上面相同)

XX.YY.ZZ.WW是我无法控制的主持人。

我的服务器在同一个以太网接口上配置了IP A和IP B.我的项目使用Apache HttpClient。如有必要,可将其更改为其他内容。

根据我的TCP / IP知识,这很容易。只要我拥有IP,我应该能够将源IP地址更改为我想要的任何内容。但毕竟,我不是直接操纵IP数据包。我不知道如何使用HttpClient完成这项工作。

2 个答案:

答案 0 :(得分:6)

final DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
params.setParameter(ConnRoutePNames.LOCAL_ADDRESS, InetAddress.getByName(IP_ADDRESS));

答案 1 :(得分:5)

您只需告诉HttpClient使用哪个网络接口即可。您可以使用连接属性执行此操作:

ConnRoutePNames.LOCAL_ADDRESS='ADDRESS A';

查看docs的第2.4节以获取完整说明。