httpclient设置本机出口IP

  • Post author:
  • Post category:其他


若本机存在多个物理或虚拟网卡,绑定多个IP,此方法可以设置httpclient绑定某一个IP进行网络访问。

通过getparams方法取得params对象再设置属性的方法在httpclient4.3中已经被废弃:

 * @deprecated (4.3) use
 *   {@link org.apache.http.client.config.RequestConfig}.
CloseableHttpClient client = ...;

byte ip[] = new byte[] { (byte) 192, (byte) 168, 1, 105 };

client.getParams().setParameter(ConnRouteParams.LOCAL_ADDRESS,InetAddress.getByAddress(ip));

因此使用RequestConfig方法代替,如下:

CloseableHttpClient client = java;
byte ip[] = new byte[] { (byte) 192, (byte) 168, 1, 105 };
RequestConfig defaultRequestConfig = RequestConfig.custom()//
                .setSocketTimeout(2000)// socket 超时设置
                .setConnectTimeout(2000)// 链接超时设置
                .setLocalAddress(InetAddress.getByAddress(IP))
                .build();

HttpClientBuilder builder = HttpClientBuilder.create()//
                .setConnectionManager(connManager)// 注册连接管理器
                // .disableCookieManagement()// 禁用cookie管理,我们自己管理cookie
                // .disableAutomaticRetries()// 禁用重发机制(禁用后出现了许多错误请求,如Connection
                // reset 等)
                .disableRedirectHandling()// 禁用重定向机制(从HttpClient的层次取消对自动重定向的支持)
                .setUserAgent("default user-agent")// 设置默认的user agent
builder.disableContentCompression();
client = builder.build();



版权声明:本文为ayw255原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。