Örnek 3
Senaryo :
İnternetteki bir kaynak üzerindeki resim datasını alıp, ilgili bir stok kartına ekleme. Örnekte Stok Kodu:000010 olan.
Örnekler diademo sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# -*- coding: utf-8 -*- ''' Örnek çalışma: İnternetteki bir kaynaktaki resmin stok kartına aktarılması ''' import sys import json from pprint import pprint import urllib2 import base64 # servis çağrısı atılacak adres ön eki wsAdresMain = 'https://diademo.ws.dia.com.tr/api/v3/' # diademo sunucusundaki ilgili firma kodu firma_kodu = 34 # diademo sunucusundaki ilgili dönem kodu donem_kodu = 1 def callWs(wsAdres, postBody): # Gönderilen adrese, gönderilen json çağrısı atar, # sonuç başarılıysa döndürür, yoksa çıkar req = urllib2.Request(wsAdres, data=json.dumps(postBody), headers={"Content-Type": "application/json"}) wsResult = urllib2.urlopen(req).read() wsResult = json.loads(wsResult) # sonuç kodu 200 döndüyse başarılı if wsResult and wsResult['code'] == '200': # msg içerisinde sessin id çıkaralım return wsResult else: pprint(wsResult) sys.exit(0) ############################################ # 1. AŞAMA : SESSION ID ALALIM # login ws parametreleri postBody = {"login" : {"username": 'ws', "password": 'ws', "disconnect_same_user": True, "lang": 'tr', } } wsResult = callWs(wsAdresMain + 'sis/json', postBody) session_id = wsResult['msg'] print "session_id: %s" % session_id ############################################ # 2. AŞAMA : Hangi stokla çalışacaksa onun _key bilgisini bulalım # scf_stokkart_listele servisine ilgili filtreyi uygulayarak stoğu alalım postBody = {"scf_stokkart_listele" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "filters":[{"field": "stokkartkodu", "operator": "=", "value": "000010"}] } } wsResult = callWs(wsAdresMain + 'scf/json', postBody) stokKartlarResult = wsResult['result'] print u"Stok kart bilgisi alındı" ############################################ # 3. AŞAMA : RESİM DATASINI WEB'DEN ÇEKİP SUNUCUYA GÖNDERELİM if stokKartlarResult: # resim datasını internetten çekelim resimData = urllib2.urlopen("http://www.dia.com.tr/wp-content/uploads/dia-logo-100.png").read() # resimleri ilgili stok bağlantısını da kullanarak # aws'ye dosya olarak gönderelim. postBody = {"sis_aws_dosya_ekle" : {"session_id": session_id, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "kart": {"kayitturu": "scf_stokkart", "_key_kayit": stokKartlarResult[0]['_key'], # Gelen listedeki ilk elemana ait _key "order_id": 1, "ext": "PNG", "base64data": base64.b64encode(resimData) # resmi base64 encode edilmiş haliyle gönderiliyoruz } } } callWs(wsAdresMain + 'sis/json', postBody) print u"İşlem tamamlandı."