Re: [問題] J2ME 呼叫web service
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):