使用Apache HttpClient定义源IP地址

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

  • 使用源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完成这项工作。

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

ConnRoutePNames.LOCAL_ADDRESS='ADDRESS A'; 

有关完整说明,请查看文档的第2.4节。

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