在请求负载均衡域名时,我们无法知道请求的是哪一台机器,这是就需要打印出真实的Ip。
public static String doGetRequest(String url){
log.info("doGetRequest url = " + url);
CloseableHttpClient httpclient=null;
CloseableHttpResponse httpResp=null;
String result=null;
HttpGet httpGet = new HttpGet(url.trim());
httpGet.setConfig(requestConfig);
try {
httpclient = HttpClients.custom()
.addInterceptorLast(new HttpResponseInterceptor() {
@Override
public void process(
final HttpResponse response,
final HttpContext context) {
HttpClientContext clientContext = HttpClientContext.adapt(context);
ManagedHttpClientConnection connection = clientContext.getConnection(ManagedHttpClientConnection.class);
// Can be null if the response encloses no content
if (connection != null) {
Socket socket = connection.getSocket();
InetAddress inetAddress = socket.getInetAddress();
System.out.println("PrintRealIpAddress=============="+inetAddress);
}
}
})
.build();
httpResp = httpclient.execute(httpGet);
System.out.println(httpResp);
int statusCode = httpResp.getStatusLine().getStatusCode();
if (statusCode == 200) {
result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
}
} catch (Exception e) {
log.error(e.getMessage(),e);
e.printStackTrace();
}
try {
if (httpResp != null) {
httpResp.close();
}
if (httpclient != null) {
httpclient.close();
}
}
catch (Exception e) {
log.error(e.getMessage(),e);
e.printStackTrace();
}
return result;
}