使用Mina2做的消息系统, 目前在外网测试中..
每天会出现20几次这样的错误
解析http请求时报如下错误:
java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(Unknown Source) [na:1.6.0_17]
at org.apache.mina.core.buffer.AbstractIoBuffer.getString(AbstractIoBuffer.java:1442) [comet-server.jar:na]
API 中的说明是当输入字节序列对于给定 charset 来说是不合法的,或者输入字符序列不是合法的 16 位 Unicode 序列时,抛出此经过检查的异常。虽然出现率不高,老大还是怀疑是解码模块的问题。 有没有有经验的朋友来解答一下?
每天会出现20几次这样的错误
解析http请求时报如下错误:
java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(Unknown Source) [na:1.6.0_17]
at org.apache.mina.core.buffer.AbstractIoBuffer.getString(AbstractIoBuffer.java:1442) [comet-server.jar:na]
API 中的说明是当输入字节序列对于给定 charset 来说是不合法的,或者输入字符序列不是合法的 16 位 Unicode 序列时,抛出此经过检查的异常。虽然出现率不高,老大还是怀疑是解码模块的问题。 有没有有经验的朋友来解答一下?
解决方案 »
- java swing 设置了JTextArea的大小无法显示滚动条!?
- 求各JAVA前辈的建议!!
- 系统监控
- 关于取jtable的问题
- 有趣的问题,请高手解答: 关于类静态成员的问题
- 解决马上给分
- 如何用Java实现目录树的创建,结点编辑(创建,更新,删除等功能)及拖放技术(鼠标操作)
- 请教:Exception in thread "main" java.lang.NoClassDefFoundError: Hello?
- 输入时的check问题
- 那个dtmark(锈芯箭)大侠,我已经成功的安装运行了JB6,但如何在安装BorlandEnterpriseServer5.0啊?,我过不了license关
- 枚举单例
- notify问题
private static final CharsetDecoder DEFAULT_DECODER = Charset.forName(
"UTF-8").newDecoder();
BufferedReader reader = new BufferedReader(new StringReader(in
.getString(DEFAULT_DECODER)));这个我还真不知道怎么调试了。
在处理数据之前,先判断ByteBuffer中的字节数,如果为奇数,则直接return false;不进行处理,等下一个消息来到时统一处理(注:可以这样做的原因是,这种现象是由于传输层上送的数据非完整应用层包)
我这边是因为发送的数据没有转成utf-8,但是获取的时候是iobuffer.getString("utf-8"),所以出错了。