Как я могу передать данные формата XML из Flex в Python - PullRequest
1 голос
/ 09 февраля 2010

я хочу передать данные в формате xml в python из flex.i знаю, как передать из flex, но мой вопрос заключается в том, как я могу получить переданные данные в python, а затем данные должны быть вставлены в mysql.и так же я хочу извлеките данные mysql в python (cgi), python должен преобразовать все данные в формат xml и передать все данные в flex .. Спасибо заранее .....

1 Ответ

1 голос
/ 09 февраля 2010

См. http://www.artima.com/weblogs/viewpost.jsp?thread=208528 для получения более подробной информации, вот краткий обзор того, что, я думаю, вы ищете.

Библиотека SimpleXMLRPCServer позволяет легко создавать сервер. Вот самый простой сервер, который вы можете создать, который предоставляет две службы для работы со строками:

import sys
from random import shuffle
from SimpleXMLRPCServer import SimpleXMLRPCServer

class MyFuncs:
    def reverse(self, str) :
        x = list(str);
        x.reverse();
        return ''.join(x);
    def scramble(self, str):
        x = list(str);
        shuffle(x);
        return ''.join(x);

server = SimpleXMLRPCServer(("localhost", 8000))
server.register_instance(MyFuncs())
server.serve_forever()

После подключения к серверу этот сервер работает как локальный объект. Вы вызываете методы сервера так же, как они являются обычными методами этого объекта.

Это примерно такая чистая реализация RPC, на которую вы можете надеяться (и существуют другие библиотеки Python RPC; например, клиенты CORBA). Но это все на основе текста; не очень удовлетворительно при попытке создавать отлаженные приложения с красивым графическим интерфейсом. То, что мы хотели бы, это лучший из всех миров: Python (или ваш любимый язык) делает тяжелую работу под одеялом, а Flex создает пользовательский опыт.

Чтобы использовать библиотеку, скачайте и распакуйте ее куда-нибудь. Пакет включает в себя весь исходный код и скомпилированную библиотеку as3-rpclib.swc - расширение .swc указывает архивный файл, и фрагменты этой библиотеки можно извлечь и включить в окончательный вариант .swf. Чтобы включить библиотеку в ваш проект, вы должны указать Flexbuilder (вы можете получить бесплатную пробную версию или просто использовать бесплатные инструменты командной строки и добавить часть Apollo), где находится библиотека, перейдя в Project | Properties и выбрав " Apollo Build Path, затем выберите вкладку «Путь к библиотеке» и нажмите кнопку «Добавить SWC ...». Затем вы добавляете пространство имен ak33m в свой проект, как показано в приведенном ниже коде, и вы готовы создать объект XMLRPCObject.

Примечание: единственная причина, по которой я здесь использовал Apollo, заключалась в том, что я думал о настольных приложениях с красивыми пользовательскими интерфейсами. Вы также можете легко превратить его в приложение Flex.

Вот все приложение Apollo в виде одного файла MXML, которое я подробно объясню:

<?xml version="1.0" encoding="utf-8"?>
<mx:ApolloApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:ak33m="http://ak33m.com/mxml" layout="absolute">
    <mx:Form>
        <mx:FormHeading label="String Modifier"/>
        <mx:FormItem label="Input String">
            <mx:TextInput id="instring" change="manipulate()"/>
        </mx:FormItem>
        <mx:FormItem label="Reversed">
            <mx:Text id="reversed"/>
        </mx:FormItem>
        <mx:FormItem label="Scrambled">
            <mx:Text id="scrambled"/>
        </mx:FormItem>
    </mx:Form>
    <ak33m:XMLRPCObject id="server" endpoint="http://localhost:8000"/>
    <mx:Script>
        <![CDATA[
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.AsyncToken;
            import mx.controls.Alert;
            import mx.collections.ItemResponder;
            private function manipulate() : void {
                server.reverse(instring.text).addResponder(new ItemResponder(reverseResult, onFault));
                server.scramble(instring.text).addResponder(new ItemResponder(scrambleResult, onFault));
            }
            private function reverseResult(event : ResultEvent, token : AsyncToken = null) : void {
                reversed.text = event.result.toString();
            }
            private function scrambleResult(event : ResultEvent, token : AsyncToken = null) : void {
                scrambled.text = event.result.toString();
            }
            private function onFault (event : FaultEvent, token : AsyncToken = null) : void {
                Alert.show(event.fault.faultString, event.fault.faultCode);
            }           
        ]]>
    </mx:Script>
</mx:ApolloApplication>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...