我的应用程序通过WebLogic 10gR3上的HTTP POST接收多部分内容。每当客户在Content-Type标头(例如charset
)上指定其他属性之前的Content-Type: multipart/form-data; charset=utf-8; boundary=a_random_boundary
属性 时,WebLogic就会抛出以下异常(在我的托管服务器日志中捕获):
不支持的编码:指定“utf-8; boundary = a_random_boundary” java.io.UnsupportedEncodingException:不支持的编码utf-8;边界= a_random_boundary
在weblogic.servlet.internal.ServletRequestImpl.setCharacterEncoding(ServletRequestImpl.java:428)
在weblogic.servlet.internal.ServletRequestImpl.initRequestEncoding(ServletRequestImpl.java:1115)
在weblogic.servlet.internal.ServletRequestImpl.getCharacterEncoding(ServletRequestImpl.java:451)
在javax.servlet.ServletRequestWrapper.getCharacterEncoding(ServletRequestWrapper.java:115)
在com.MyClass.myMethod(MyClass.java:100)
仅供参考,我正在对第100行的getCharacterEncoding()
实例进行HttpServletRequest
调用。
但是,如果客户端在标题末尾指定了字符集(例如,Content-Type:multipart / form-data; boundary = a_random_boundary; charset = utf-8),则应用程序和WebLogic可以正常运行。
根据RFC2045,参数的顺序并不重要:
Content-Type标头字段指定了数据的性质 通过提供媒体类型和子类型标识符来实体的主体 通过提供某些可能需要的辅助信息 媒体类型。媒体类型和子类型名称后,余数 标题字段只是一组参数,在一个中指定 attribute = value表示法。 参数的排序不是 显著
我已经四处搜寻了,我越接近类似的问题就是OTN的以下thread。
我假设这是WebLogic中的一个错误,但我认为在联系支持和/或制定解决方法之前,我会寻找一些见解。
感谢您对此问题的任何见解。