2011-01-31 47 views
0

我想在java类中获取绝对URL,但即使将它转换为Object类型后也会得到错误。在java中的绝对URL

任何建议

String file = ((Object) request).getRequestURI(); 
    if (((Object) request).getQueryString() != null) { 
     file += '?' + ((Object) request).getQueryString(); 
    } 
    URL reconstructedURL = new URL(request.getScheme(), 
            request.getServerName(), 
            request.getServerPort(), 
            file); 
    System.out.println(URL.toString()); 
+0

什么是'request`的实际类型?默认情况下,请求已经是`Object`(不需要强制转换),并且它肯定不包含`getRequestURI`方法。我认为你得到了一个没有找到错误的方法。请求应该是一个HttpServletRequest? http://download.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html – hisdrewness 2011-01-31 06:08:49

回答

2

强制转换为对象从不nessecary,因为一切都是对象。我建议发布你的错误的堆栈跟踪。

((Object) request).getRequestURI()不起作用,因为Object没有getRequestURI()函数。只需将演员离开。

4

除了@丹尼尔说的URL类还没有静态方法,如.toString()。您应该使用reconstructedURL代替

我没有测试,但请尽量将

String file = (request).getRequestURI(); 
if ((request).getQueryString() != null) { 
    file += '?' + (request).getQueryString(); 
} 

URL reconstructedURL = new URL(request.getScheme(), 
           request.getServerName(), 
           request.getServerPort(), 
           file); 
System.out.println(reconstructedURL.toString());