PyAMFを使用すればPythonとActionScript3とのデータのやりとりをオブジェクトで行うことができます。PyAMFはDjango・Pylons・CherryPyなどのWebフレームワークに対応しています。
今回はDjangoとFlex2の間でデータを送受信する簡単なサンプルを作成しました。
まずはFlex2ですが「NetConnection」クラスを使用してDjangoにデータを送信します。
■PyAMF.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="applicationCompleteHandle()">
<mx:Script>
<![CDATA[
public function applicationCompleteHandle():void
{
var netConnection:NetConnection = new NetConnection();
netConnection.connect("http://localhost:8080/pyamf/");
var p:Person = new Person();
p.name = "山田 太郎"
p.age = 28;
var responder:Responder = new Responder(onResult, onError);
netConnection.call("greeting", responder, "Hello PyAMF", p)
}
private function onResult(result:*):void
{
trace(result)
}
private function onError(error:*):void
{
trace(error)
}
]]>
</mx:Script>
</mx:Application>
■Person.as
package
{
public class Person
{
public var name:String;
public var age:int;
}
}
続いてDjango側は「pyamf.remoting.djangogateway.DjangoGateway」クラスを使用してFlex2とのデータを送受信します。
views.pyなどにDjangoGatewayを定義してDjangoGatewayのコンストラクタに公開したいメソッドの名称とメソッド自身を辞書に格納して渡します。
def greeting(request, message, person):
print message
print person.name.encode("cp932")
return "Hello Flex2"
gw = DjangoGateway({'greeting':greeting})
あとはurls.pyで上記の「gw」が呼び出されるように設定します。(greetingメソッドを直接呼び出すわけではありません)
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^pyamf/', 'rstone.moblogger.views.gw'),
)
上記のプログラムを実行するとDjangoでは・・・
Hello PyAMF
山田 太郎
と表示され、Flex2では・・・
Hello Flex2
と表示されました。
Flex2からDjangoに送信したPersonクラスですが、Djangoでは「pyamf.ASObject」になるようです。
ラベル: Flex, Python