作者lailai9 (sly9)
看板java
标题Re: [问题] J2ME 呼叫web service
时间Sun Apr 26 17:37:45 2009
※ 引述《skyblue2021 (空虚的人生)》之铭言:
: 自问自答再自己提问
: 在google上找到了问题的解答
: 不过只有一句话=.=
: "选择使用Filter把Request的编码方式设置为GBK来解决"
Filter么……就是过滤器了- -b
这里说的Filter的意思就是
“当你的一个请求发送到服务器,在被服务器相关的程序处理之前,我们可以做一个 过滤 的动作“
这个过滤具体会做什么都是你可以指定的,但我们一般做的就是做字符串的编码/解码
为什么要做这个,那是因为java内部String都是unicode的,但网络传递过来的字符串
则可能是各种编码的(GBK/Big5/UTF-8/....),我们需要让服务器断能正确的识别它,所以要过滤一下
但这些事儿一般都不需要自己再去做了,强烈推荐你将client、server要用到的编码都指定为utf-8来解决所有问题
具体的指定方法……一般来说其实只要修改配置文件就好了- -b (请忘掉filter,很多时候我们不需要自己折腾这些麻烦事儿)
比如你可以看看tomcat/conf/web.xml里头,寻找类似于这样的一段:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
嗯,主要是URIEncoding="UTF-8"
这里了。。这对于许多问题应该已经能解决。。但如果还解决不了的话,只好自己去配置
Filter了= =b
: 不过小弟还嫩嫩的
: 看不太懂这句话的意思 囧
: 我只知道GBK是一种中文的编码
: 不过不了解话中的filter指的是什麽? 该如何去解决?
: 希望有大大可以提供一点意见
: 感激不尽~
: ※ 引述《skyblue2021 (空虚的人生)》之铭言:
: : 目前我使用JWSDP建立了一个web service
: : 并且使用J2ME建立了client端程式
: : 当我以英文或数字当参数去呼叫我的web service时一切正常
: : 可是当我以中文当参数去呼叫web service时就产生了以下错误
: : "java.rmi.MarshallException: SAXParseException in response from server"
: : 不过当我用J2SE来写client端时不论参数是中文英文或数字一切都正常
: : 不知道有没有大大有遇过这样的问题?
: : 我的环境是
: : WTK2.2 JDK1.6 Tomcat-for jwsdp5.5
: : 感激不尽~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 222.130.137.106