- 今回、ハマった箇所
- 下記のURLからPyAMF-0.5.1.zipをダウンロード
- 必要なものをディレクトリに揃える
cp -R /usr/local/google_appengine/new_project_template MyProject
cp -R PyAMF-0.5.1/pyamf MyProject
cd MyProject
ls -l
+ MyProject
- app.yaml
- index.yaml
- main.py
- pyamf
application: pyamf
version: 1
runtime: python
api_version: 1
- url: /.*
script: main.py
import logging
import wsgiref.handlers
from pyamf.remoting.gateway.wsgi import WSGIGateway
def echo(data):
return data
def main():
services = {
// Flexで呼ぶときのサービス名
'myservice.echo': echo,
}
// CGI上、お決まり
gateway = WSGIGateway(services, logger=logging, debug=True)
wsgiref.handlers.CGIHandler().run(gateway)
if __name__ == '__main__':
main()
./dev_appserver.py --debug --address=localhost --port=8080 MyProject/
※俺の場合、
# 400 Bad Request
# To access this PyAMF gateway you must use POST requests (GET received)
ってエラーが出た
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.net.*;
private function doRequest():void{
var responder:Responder = new Responder(onSuccess, onFault);
var connection:NetConnection = new NetConnection();
connection.connect("http://localhost:8080/");
connection.objectEncoding = ObjectEncoding.AMF3;
connection.call("myservice.echo", responder, nameText.text);
}
private function onSuccess(e:*):void{
Alert.show(e.toString());
}
private function onFault(e:*):void{
Alert.show("通信失敗");
}
]]>
</mx:Script>
<mx:TextInput x="10" y="36" id="nameText" />
<mx:Button label="Submit" id="idTest" click="doRequest()" x="10" y="66"/>
<mx:Label x="10" y="10" text="name" color="#FFFFFF"/>
</mx:Application>