若本机存在多个物理或虚拟网卡,绑定多个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();