Делать POST в приложении AIR - PullRequest
2 голосов
/ 24 мая 2010

Я пытаюсь опубликовать данные на странице, которая обрабатывает их для меня. Однако я всегда получаю следующую ошибку:

ioErrorHandler: [IOErrorEvent type = "ioError" пузыри = ложь отмена = ложь eventPhase = 2 text = "Ошибка # 2032: ошибка потока. URL: http://localhost:8080/_user/a/ad/admin/message.create.html" errorID = 2032] Blockquote

Это код, который у меня есть. Это прекрасно работает для запросов GET.

        // Object that contains data of the message to be sent
        var toSend:Object = {
            "sakai:type": "internal",
            "sakai:sendstate": "pending",
            "sakai:messagebox": "outbox",
            "sakai:to": "internal:"+sakaimain.gui.dgMessages.selectedItem["to"],
            "sakai:subject": sakaimain.gui.dgMessages.selectedItem["subject"],
            "sakai:body":"testreply with AIR GUI",
            "sakai:previousmessage" : sakaimain.gui.dgMessages.selectedItem["id"]
        };
        // Send message
        // Create loader to load objects
        var loader:URLLoader = new URLLoader();
        // Add event listeners for error and complete events
        loader.addEventListener(Event.COMPLETE, replyMessageCompleteHandler);
        loader.addEventListener(IOErrorEvent.IO_ERROR, replyMessageErrorHandler);
        // Create the request to be done
        var request:URLRequest = new URLRequest("http://localhost:8080/_user/a/ad/admin/message.create.html");
        request.requestHeaders = new Array(new URLRequestHeader("x-sakai-token", sakaimain.token ));
        request.method = URLRequestMethod.POST;
        request.data = toSend;
        // Do the request
        loader.load(request);

Кто-нибудь видел проблему здесь?

Ответы [ 2 ]

1 голос
/ 26 мая 2010

Проблема была решена. Я создал URLVariables вместо объекта для прохождения, который исправил проблему.

var urlv:URLVariables = new URLVariables();
urlv["sakai:type"] = "internal";
urlv["sakai:sendstate"] = "pending";
urlv["sakai:messagebox"] = "outbox";
urlv["sakai:to"] = "internal:"+sakaimain.gui.dgMessages.selectedItem["from"];
urlv["sakai:subject"] = sakaimain.gui.dgMessages.selectedItem["subject"];
urlv["sakai:body"] ="testreply with AIR GUI";
urlv["sakai:previousmessage" ] = sakaimain.gui.dgMessages.selectedItem["id"];
0 голосов
/ 24 мая 2010

Сначала проверьте ваш URL.Вот где обычно возникает ошибка потока.Убедитесь, что вы можете публиковать на этот URL за пределами вашего приложения Flex.Если вы не можете, вы, вероятно, получите лучшее сообщение об ошибке.

Какой серверный язык вы используете?Вы действительно собираетесь публиковать в файл .html?

Если URL-адрес точный, попробуйте отправить более простой запрос только с одной парой ключ-значение.знаете, но вы уверены, что в имени переменной формы может быть: двоеточие?Я предполагаю, что это может зависеть от используемого вами языка на стороне сервера.

...