我有此功能可以從我的請求(HttpServletRequest)獲取HostAddress。但使用Jetty 7.x和我的IP是IPV6我總是有iPv6地址這個錯誤。錯誤0:0:0:0:0:0:0:1%0獲得IP V6客戶端
我的功能:
xxxx.getIP(request, false);
public static String getIP(HttpServletRequest request, boolean proxy) {
String ip = "";
log.debug("X-getHeaderNames ["+ request.getHeaderNames()+"]");
if (proxy) {
ip = XFordwardedInetAddressUtil.getAddressFromRequest(request);
} else {
String _ip = request.getRemoteAddr();
ip = InetAddresses.forString(_ip).getHostAddress();
}
return ip;
}
錯誤:
DEBUG: org.encuestame.core.exception.EnMeMappingExceptionResolver - Resolving exception from handler [[email protected]]: java.lang.IllegalArgumentException: '0:0:0:0:0:0:0:1%0' is not an IP string literal. java.lang.IllegalArgumentException: '0:0:0:0:0:0:0:1%0' is not an IP string literal. at org.encuestame.utils.net.InetAddresses.forString(InetAddresses.java:59) at org.encuestame.core.util.EnMeUtils.getIP(EnMeUtils.java:210) at org.encuestame.mvc.controller.AbstractBaseOperations.getIpClient(AbstractBaseOperations.java:262) at org.encuestame.mvc.controller.TweetPollController.detailTweetPollController(TweetPollController.java:332) at org.encuestame.mvc.controller.TweetPollController$$FastClassByCGLIB$$6990b004.invoke() at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedIntercepto
我知道IPv6的本地主機格式應爲 '0:0:0:0:0:0:0:1',但我的請求總是返回此字符串'0:0:0:0:0:0:0:1%0'
任何人都可以幫助我?
謝謝,完美無缺! –