我正在尝试将现有的Ajax应用程序移植到flex,但在对发送到后端服务的参数进行编码时遇到了问题。
当试图执行删除联系人的操作时,现有的应用程序执行一个POST,发送以下内容:(用Firebug捕获)
contactRequest.contacts[0].contactId=2c33ddc6012a100096326b40a501ec72
因此,我创建了以下代码:
var service:HTTPService;
function initalizeService():void
{
service = new HTTPService();
service.url = "http://someservice";
service.method = 'POST';
}
public function sendReq():void
{
var params:Object = new Object();
params['contactRequest.contacts[0].contactId'] = '2c33ddc6012a100097876b40a501ec72';
service.send(params);
}
在Firebug中,我看到这个消息如下:
Content-type: application/x-www-form-urlencoded
Content-length: 77
contactRequest%2Econtacts%5B0%5D%2EcontactId=2c33ddc6012a100097876b40a501ec72
flex是在发送参数之前对其进行URL编码的,我们从服务器收到一个返回的错误。
如何在不使用URL编码的情况下禁用此编码并按原样发送参数?
我感觉像
contentType
属性应该是键,但定义的值都不起作用。
另外,我也考虑过写一篇
SerializationFilter
但这似乎有点过分杀伤力——有更简单的方法吗?