The pyamf.org (that has already been linked to) is great. An alternative (if you dont need the unserialized data server side) is to use byteArray. I pasted below a very scrappy example of how to get this working using Google App Engine (in python). Incidentally, the same GAE had a pyamf example in it, which I have left, but which is commented out. (The MXML/AS is first, then the python)
tom <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()"> <mx:Script> <![CDATA[ import flash.net.*; import flash.utils.*; private var fileID:int public function initApp():void{ var args1:Array = new Array var args2:Array = new Array var ba:ByteArray = new ByteArray args1[0] = [1, 3, 10] args1[1] = [4,3,3,4,5] args2 = [0,1] ba.writeObject(args1); ba.writeObject(args2); trace("ba position: " + ba.position) ba.position = 0; trace("ba position: " + ba.position) var args3:Array = ba.readObject(); trace("ba position: " + ba.position) var args4:Array = ba.readObject(); trace("ba position: " + ba.position) for each (var e:* in args3){ trace("args 1 : " + e) } for each (var f:* in args4){ trace("args 2: " + f) } fileID = 1002 var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("http://localhost:8080/byte?fileID="+fileID); request.method = URLRequestMethod.POST request.data = ba request.contentType = 'application/octet-stream'; loader.addEventListener(Event.COMPLETE, onWriteComplete); configureListeners(loader); loader.load(request) } private function getData():void{ var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY var request:URLRequest = new URLRequest("http://localhost:8080/byte?fileID="+fileID); request.method = URLRequestMethod.GET request.contentType = 'application/octet-stream'; loader.addEventListener(Event.COMPLETE, onData); configureListeners(loader); loader.load(request) } private function configureListeners(dispatcher:IEventDispatcher):void { //dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function onData(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); trace("class: "+ getQualifiedClassName(loader.data)) trace("ba position: " + loader.data.position) var b1:Array = loader.data.readObject() for each (var b:* in b1){ trace("args : " + b) } trace("ba position: " + loader.data.position) var b2:Array = loader.data.readObject() for each (var c:* in b2){ trace("args : " + c) } } private function onWriteComplete(event:Event):void { trace("write complete: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } ]]> </mx:Script> <mx:Button label="get data" click="getData()"/> </mx:Application> **************** python for GAE ********************** #!/usr/bin/env python import wsgiref.handlers import cgi import wsgiref.handlers import os import logging from google.appengine.ext import webapp from google.appengine.ext import db from google.appengine.ext.webapp import template #from pyamf.remoting.gateway.google import WebAppGateway class TestData(db.Model): s = db.StringProperty() d = db.BlobProperty() l = db.ListProperty(int) class MainPage(webapp.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write('Hello, webapp World!') class Show(webapp.RequestHandler): def get(self): testdata = db.GqlQuery("SELECT * from TestData") template_values = { 'testdata': testdata, } path = os.path.join(os.path.dirname(__file__), 'show.html') self.response.out.write(template.render(path, template_values)) class Byte(webapp.RequestHandler): def get(self): fileID = self.request.get('fileID') td = TestData.gql("where s = :1", fileID).get() self.response.headers['Content-Type'] = 'application/octet-stream' self.response.out.write(td.d) def post(self): fileID = self.request.get('fileID') logging.info("data posted for fileID: " + fileID) t = TestData() t.s = fileID t.d = db.Blob(self.request.body) t.put() #def echo(data): # #self.logger.debug("Echo called. Data is ot type: " + type(data)) # t = TestData() # b = db.Blob(str(data)) # t.d = b # t.s = str(eval(b)) # #t.l = data # t.put() # return eval(b) #services = { # 'myservice.echo': echo, #} def main(): application_paths = [('/', WebAppGateway(services)), ('/helloworld', MainPage), ('/show', Show), ('/byte', Byte)] application = webapp.WSGIApplication(application_paths, debug=True) wsgiref.handlers.CGIHandler().run(application) --- In [email protected], "rbross77" <ro...@...> wrote: > > Hello, > > I am look ing for some code example of using Python with Flex. > I would like to be able to retrieve data using RemoteObjects and call the Python file/program > to return the results in AMF format and not XML. > > Thank you, >

