python的flex服务端数据接口开发

python的flex服务端数据接口开发

python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类。这方面我更加推荐用twisted来写这个网关,因为twisted有很好的异步机制。

下面的我写的一个简单的验证用户的python服务端:

______________________________
DBServer.py

# Copyright (c) 2009-2010 The Newjh Project.
"""
@author: Roy
@since: 0.1.0
"""

import os.path

import ConfigParser

cfg = ConfigParser.SafeConfigParser()
cfg.read(‘settings.cfg‘)

from twisted.internet import reactor
from twisted.web import server as _server, static, resource
from twisted.enterprise import adbapi

from pyamf.remoting.gateway.twisted import TwistedGateway

from newjh import newjhService

root = resource.Resource()
gw = TwistedGateway({‘newjh‘: newjhService(adbapi.ConnectionPool(‘MySQLdb‘,
host=cfg.get(‘db‘,‘host‘), user=cfg.get(‘db‘,‘user‘),
passwd=cfg.get(‘db‘,‘password‘), db=cfg.get(‘db‘,‘database‘),
cp_reconnect=True,use_unicode=True, charset=‘utf8‘))},     expose_request=False)

root.putChild(‘gateway‘, gw)
root.putChild(‘crossdomain.xml‘, static.File(os.path.join(os.getcwd(),
os.path.dirname(__file__), ‘crossdomain.xml‘), defaultType=‘application/xml‘))

server = _server.Site(root)

reactor.listenTCP(8000, server)

reactor.run()

————————————————
newjh.py

"""
Newjh remoting service.

@since: 0.1.0
"""

from datetime import datetime
from urlparse import urlparse
import re

from twisted.internet import defer
from twisted.internet.task import LoopingCall

import pyamf 
from pyamf.flex import ArrayCollection, ObjectProxy
from pyamf.remoting.gateway import expose_request

EMAIL_RE = r"^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$"

# This is MySQL specific, make sure that if you use a different database server
# this is updated to ensure sql injection attacks don‘t occur 
def sql_safe(value):
if isinstance(value, basestring):
return value.replace("‘", "\\‘")
elif isinstance(type(value), (int, float)):
return value

raise TypeError, ‘basestring, int or float expected‘

def is_valid_url(url):
o = urlparse(url)

# scheme
if o[0] == ‘‘:
return (False, ‘Scheme required‘)

if o[1] == ‘‘:
return (False, ‘Hostname required‘)

return (True, None)

def is_valid_email(email):
"""
A very basic email address format validator
"""
if re.match(EMAIL_RE, email) != None:
return True

return False

def build_message(row):
m = User()
m.ID = row[0]
m.UserName = row[1]
m.Password = row[2]
return m

class User:
pass

pyamf.register_class(User, ‘newjh.User‘)

class newjhService(object):
def __init__(self, pool):
self.conn_pool = pool
LoopingCall(self._keepAlive).start(3600, False)

def _keepAlive(self):
print ‘Running Keep Alive...‘
self.conn_pool.runOperation(‘SELECT 1‘)

def getUser(self, username, password):
"""
Gets all approved messages.
"""
print ‘username : %s passwrd : %s‘ % (username, password)
def cb(rs):
print rs
ret = [ObjectProxy(build_message(row)) for row in rs]
print ret
return ArrayCollection(ret)

def eb(failure):
# TODO nick: logging
return ArrayCollection()

d = self.conn_pool.runQuery("SELECT * FROM user where " + \
"UserName= ‘" +username + "‘ and Password = ‘" + \
password +"‘" ).addErrback(eb).addCallback(cb)

return d
——————————————————
crossdomain.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

——————————————————

settings.cfg
[db]
host:         localhost
user:         root
password:     *********
database:    newjh

————————————————————————
————————————————————————
flex 客户端:

客户端先建立联接,然后就可以向服务端call了,回调写在onResult
要注意的是gateway / newjh.getUser 和服务端要对应好
基类 extends NetConnection

connect("http://127.0.0.1:8000/gateway");
addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

responder = new Responder(onResult);

call(“newjh.getUser”, responder, event.data["name"], event.data["pass"]);

python的flex服务端数据接口开发,布布扣,bubuko.com

时间: 2024-10-07 23:52:52

python的flex服务端数据接口开发的相关文章

网站的优化----首页优化---app调取服务端数据

高并发经常会发生在有大活跃用户量来访问网站的某个点,例如用户高聚集的业务场景中,如:抢购,促销等.为了让用户流畅的访问网站,来根据自己的业务设计适合系统的处理方案. //对于APP网站首页数据,通常是有APP请求服务端数据在本机进行绘制.APP越少的请求服务端的,就会减少服务器压力:资源和带宽. 1.服务端给APP下发的数据越少,减少无用字段的下发.就是APP需要什么,服务端下发什么. 2.APP每次请求服务端数据,服务端下发最新数据和数据版本号,APP可以缓存到本地,每次接口请求数据的时候,上

android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据

主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: URL url = new URL(http://10.0.2.2/index.php); openConnection()方法返回一个对指定url的资源的连接.返回类型是URLConnection,但是,由于这里我们一般用的是http协议,所以返回的实际是HttpURLConnection对象,故一

服务端测试之接口测试用例设计

小伙伴们大家好,上一次和大家分享了<服务端测试之接口测试初探>,讲了一些接口测试的基本概念和理论知识.在上次的分享中,简单提到了接口测试用例设计包含的几个方面.本期我将在上次分享的基础上,和各位小伙伴一起具体看看这几个方面都是什么,在实际的项目中应该如何使用. 一.功能性用例设计 之前讲过,服务端的接口是和客户端的功能相对应的,对功能的验证,可以参照接口说明文档来进行.概括起来讲,就是我们需要验证接口说明文档中提到的各种情况,保证这些情况下接口的返回和最初设计的是一样的,这样我们就可以认为该接

LigerUI中通过加载服务端数据进行表格的分页显示

前言:我的这一篇文章是紧接着上一篇关于LigerUI的文章(http://www.zifangsky.cn/379.html)写的,因此在这里我就省略了相关的环境搭建,直接进入正题 一 介绍 在LigerUI中显示表格是用的ligerGrid,同时我们可以通过配置url参数就可以加载远程数据并显示成表格形式.不仅如此,ligerGrid还可以进行数据的排序和分页显示: (1)排序:需要用到"sortname"和"sortorder"这两个参数,分别表示按哪个字段排序

python 模拟HTTP服务端

使用python模拟http服务端,自定义返回信息头部: #!/usr/bin/python import os from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer Host = '' Port = 8080 class RequestHandler(BaseHTTPRequestHandler):         def do_GET(self):                 Time = os.popen('date 

【教程】【FLEX】#002 请求服务端数据(UrlLoader)

为什么Flex需要请求服务端读取数据,而不是自己读取? Flex 是一门界面语言,主要是做界面展示的,它能实现很多绚丽的效果,这个是传统Web项目部能比的. 但是它对数据库和文件的读写 没有良好的支持. 既然Flex没有对数据库和读写文件有良好的支持,那么读数据数据,和读写文件,可以用C#或者Java来编写,然后Flex请求 用C#或者Java写好的接口. Flex请求服务端接口的方法有很多种,这边我就讲解如何使用UrlLoader来请求接口. 请求服务端接口的步骤: 1.创建UrlReques

webService服务端和客户端开发 简单实例

这几天一直在看webService相关的知识. webService是一个跨平台访问的第三方插件,方便易用,多平台使用. 开发中我们可能自己是服务端,提供webService接口给别人访问我们的系统:也有可能我们调用别人的webService接口去访问别人的系统(比如查询天气预报). 下面是服务端和客户端的开发,实际开发中我们只是其中一方. 服务端开发: ①创建一个服务类,运行main方法发布即可,服务端就开发完成了. package com.lijianbo.service; import j

WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探

Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事,但是对于那些实时要求比较高的应用来说,比如说在线游戏.在线证券.设备监控.新闻在线播报.RSS 订阅推送等等,当客户端浏览器准备呈现这些信息的时候,这些信息在服务器端可能已经过时了.所以保持客户端和服务器端的信息同步是实时 Web 应用的关键要素,对 Web 开发人员来说也是一个难题.在 WebSo

Pywss - 用python实现WebSocket服务端

一种类似Flask开发的WebSocket-Server服务端框架,适用python3.X 1.安装模块Pywss pip install pywss 2.搭建简易服务器 2.1 服务端代码 代码简介 route: 注册请求路径 example_1(request, data): request: socket句柄,能够发送和接收数据接.发送数据request.ws.send(data),收数据request.ws_recv(1024) data: 客户端发送的数据存于此处 from pywss