在某个地方,我收到了一些愚蠢且无效的got服务URL请求,比如
http://localhost:8080/WebApplication1/webresources/testme?stupidparameter=dyndcvgz/&%$\xa7edns我的示例应用程序如下所示,使用Netbeans在glassfish 4.0和jdk1.7u40上构建
package WebApplication1;
import javax.ejb.Stateless;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
@Stateless
@Path("/testme")
public class NewSessionBean {
/**
* http://localhost:8080/WebApplication1/webresources/testme?stupidparameter=dyndcvgz/&%$\xa7edns
*
* @param stupidparameter
* @return
*/
@GET
@Produces("text/plain")
public String getXml(
@QueryParam("stupidparameter") String stupidparameter) {
System.out.println("stupidparameter = " + stupidparameter);
return "got " + stupidparameter;
}
}使用给定的测试url,我总是从org.jboss.weld.servlet.WeldListener获得IllegalStateException: isHexDigit。如何避免或处理此异常?
发布于 2013-12-12 23:54:38
这似乎是Glassfish的一个问题,它使用特殊字符处理参数的方式。
https://java.net/jira/browse/GRIZZLY-1538
在将来的版本中解决该问题之前,您可以尝试将参数编码为base64,然后在getXml()内部接收到该参数时对其进行解码。这将避免相关的特殊字符通过glassfish中抛出异常的逻辑。
https://stackoverflow.com/questions/19654462
复制相似问题