Flex предотвращает URL-кодирование параметров с помощью HTTPRequest - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь перенести существующее приложение 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, но это кажется излишним - есть ли более простой способ?

1 Ответ

1 голос
/ 03 сентября 2010

Создание фильтра SerializtionFilter, похоже, помогло:

public class MyFilter extends SerializationFilter
{
    public function MyFilter()
    {
        super();
    }
    override public function serializeBody(operation:AbstractOperation, obj:Object):Object
    {
        var s:String = "";
        var classinfo:Object = ObjectUtil.getClassInfo(obj);

        for each (var p:* in classinfo.properties)
        {
            var val:* = obj[p];
            if (val != null)
            {
                if (s.length > 0)
                    s += "&";
                s += StringUtil.substitute("{0}={1}",p,val);
            }
        }
        return s;
    }
}

Хотелось бы узнать какие-либо альтернативные решения, которые не предполагают этого!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...