pysimplesoap実現soap web api
2360 ワード
server.py
client.py
from pysimplesoap.server import SoapDispatcher, SOAPHandler
from BaseHTTPServer import HTTPServer
import base64
import cv2
from frvehiclelpr import *
import sys
import json
lpr = 0
def analyseImg(data, fileFormat):
s = base64.b64decode(data)
fileName = "test1." + fileFormat
fileName = str(fileName)
f = open(fileName, 'wb')
f.write(s)
f.flush()
f.close()
res = lpr.recognizeFile(fileName)
res['platenum'] = res['platenum'].decode('gb2312')
#print res['platenum']
jstr = json.dumps(res)
bstr = base64.b64encode(jstr)
return bstr
if __name__ == '__main__':
lpr = FrVehicleLpr()
res = lpr.init()
if not res:
print "init lpr failed !"
sys.exit(0)
dispatcher = SoapDispatcher(
'my_dispatcher',
location = "http://localhost:8008/",
action = 'http://localhost:8008/',
namespace = "http://example.com/sample.wsdl", prefix="ns0",
trace = True,
ns = True)
dispatcher.register_function('AnalyseImg', analyseImg,
returns={'analyseResult': str},
args={'data': str, 'fileFormat': str})
print "Starting server..."
httpd = HTTPServer(("", 8008), SOAPHandler)
httpd.dispatcher = dispatcher
httpd.serve_forever()
client.py
from pysimplesoap.client import SoapClient,SoapFault
import base64
import json
class FrClient(object):
def __init__(self):
self.client = 0
def init(self, add = 0):
if add == 0:
self.client = SoapClient(wsdl="http://localhost:8008")
else:
self.client = SoapClient(wsdl=add)
def analyseImg(self, srcName, formatName = 0):
f = open(srcName, 'rb')
s = f.read()
d = base64.b64encode(s)
f.close()
if formatName == 0:
formatName = srcName[len(srcName)-3:]
response = self.client.AnalyseImg(data = d,fileFormat = formatName)
dres = response['analyseResult']
jres = base64.b64decode(dres)
res = json.loads(jres)
return res
if __name__ == '__main__':
pass