ผลต่างระหว่างรุ่นของ "Tutorial Odoo 9.0 Part 15 : WebServices"
จาก Morange Wiki
Bombay (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย '== ทำ WebService == * จะเป็นรูปแบบมาตราฐานเป็นแบบนี้ - XML-RPC - JSON-R...') |
Bombay (คุย | มีส่วนร่วม) (→ทำ WebService) |
||
แถว 1: | แถว 1: | ||
== ทำ WebService == | == ทำ WebService == | ||
* จะเป็นรูปแบบมาตราฐานเป็นแบบนี้ | * จะเป็นรูปแบบมาตราฐานเป็นแบบนี้ | ||
− | - XML-RPC | + | - XML-RPC <br/> |
- JSON-RPC | - JSON-RPC | ||
รุ่นแก้ไขปัจจุบันเมื่อ 17:40, 19 กรกฎาคม 2559
ทำ WebService
- จะเป็นรูปแบบมาตราฐานเป็นแบบนี้
- XML-RPC
- JSON-RPC
XML-RPC
- สร้างไฟล์ python ขึ้นมา และใส่ Code ลงไปดังนี้
- แก้ DB, USER, PASS ตามที่ Setting
import functools import xmlrpclib HOST = 'localhost' PORT = 8069 DB = 'openacademy' USER = 'admin' PASS = 'admin' ROOT = 'http://%s:%d/xmlrpc/' % (HOST,PORT) # 1. Login uid = xmlrpclib.ServerProxy(ROOT + 'common').login(DB,USER,PASS) print "Logged in as %s (uid:%d)" % (USER,uid) call = functools.partial( xmlrpclib.ServerProxy(ROOT + 'object').execute, DB, uid, PASS) # 2. Read the sessions sessions = call('openacademy.session','search_read', [], ['name','seats']) for session in sessions: print "Session %s (%s seats)" % (session['name'], session['seats']) # 3.create a new session session_id = call('openacademy.session', 'create', { 'name' : 'My session', 'course_id' : 2, })
- เมื่อเขียนเสร็จแล้ว ใช้คำสั่งรันบน command line
python <ชื่อไฟล์>
- จะได้ผลลัพธ์ดังนี้
JSON-RPC
- เขียนโปรแกรม python เหมือนตัวอย่างข้างบนใช้ Code ตามนี้
import json import random import urllib2 def json_rpc(url, method, params): data = { "jsonrpc": "2.0", "method": method, "params": params, "id": random.randint(0, 1000000000), } req = urllib2.Request(url=url, data=json.dumps(data), headers={ "Content-Type":"application/json", }) reply = json.load(urllib2.urlopen(req)) if reply.get("error"): raise Exception(reply["error"]) return reply["result"] def call(url, service, method, *args): return json_rpc(url, "call", {"service": service, "method": method, "args": args}) # log in the given database url = "http://%s:%s/jsonrpc" % (HOST, PORT) uid = call(url, "common", "login", DB, USER, PASS) # create a new note args = { 'color' : 8, 'memo' : 'This is another note', 'create_uid': uid, } note_id = call(url, "object", "execute", DB, uid, PASS, 'note.note', 'create', args)