Javaのリクエスト(HttpServletRequest)からHostAddressを取得するこの関数があります。しかし、Jetty 7.x を使用していて、私の IP は ipV6 であり、常に iPv6 アドレスでこのエラーが発生します。
私の機能:
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 - ハンドラー [org.encuestame.mvc.controller.TweetPollController@4fc23996] からの例外の解決: java.lang.IllegalArgumentException: '0:0:0:0:0:0:0 :1%0'は IP 文字列リテラルではありません。java.lang.IllegalArgumentException: '0:0:0:0:0:0:0:1%0'IP 文字列リテラルではありません。org.encuestame.utils.net.InetAddresses.forString(InetAddresses.java:59) で org.encuestame.core.util.EnMeUtils.getIP(EnMeUtils.java:210) で 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 org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedIntercepto の .cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
iPv6 localhost 形式は '0:0:0:0:0:0:0:1' である必要があることはわかっていますが、私のリクエストは常にこの文字列 '0:0:0:0:0:0:0:1%0' を返します。 '
誰でも私を助けることができますか?