刚学习Flex,在开始学习Flex的Remote通信时,似乎没有遇到后台java与前台flex通信
时的编码问题,前俩天在维护一个系统时终于碰到了: 开始客户端使用的是get方式传递中文
参数,在配置了Tomcat服务器的conf文件下server.xml中服务器的编码为utf-8后,仍不行,
后来在把get方式换成post方式时,程序调试成功,代码如下:
//u为url字符串,/doLoad为一个servlet的url pattern
var u:String ="http://localhost:8080/TestProject/doLoad”;
var request:URLRequest = new URLRequest(u);
request.method = URLRequestMethod.POST;
var vars: URLVariables = new URLVariables ();
vars["file"] = filePath; //把参数键,值对放到vars对象中. filePath含有中文
request.data = vars;
//myFile是自己定义的一个FileReference,Flex的一个负责上传或者下载的类
myFile.upload(request,param,false);
myFile.addEventListener(ProgressEvent.PROGRESS,onProcess);
myFile.addEventListener(Event.COMPLETE,onComplete);
而后发现用Get方式传递,其实只需要对参数进行Url的格式转换便正确,代码如下
var u:String="http://localhost:8080/TestProject/doLoad?file= "+encodeURIComponent(filePath);
var request:URLRequest = new URLRequest(u);
request.method = URLRequestMethod.GET;
myFile.upload(request,param,false);
myFile.addEventListener(ProgressEvent.PROGRESS,onProcess);
myFile.addEventListener(Event.COMPLETE,onComplete);
因为Tomcat已经配置编码为utf-8,所以在servlet端对get的参数的获取就不需要进行解码
了, 如果没有配置服务器编码则需要解码:
filename = request.getParameter("file");
//如果没有对tomcat的默认字符编码配置则需要如下url解码信息
filename= java.net.URLDecoder.decode(filename,"UTF-8");
这也是flex的HttpServices通信(Get和Post方式)的差异吧。
本文探讨了在使用Flex与Java进行远程通信时,GET和POST方式的差异,以及在配置Tomcat服务器编码为utf-8后,如何解决通过GET方式传递中文参数时的编码问题。

151

被折叠的 条评论
为什么被折叠?



