服务器A--服务器B
服务器A为客户端,服务器B实现Webservice请求
客户端A根据配置的url(该url为服务器B提供的服务),获取wsdl描述符
检索wsdl描述符中配置的url,尝试连接。若不能连接,则客户端请求失败。
# coding:utf-8
import sysreload(sys)
sys.setdefaultencoding('utf8')
import openerp.pooler as pooler
from datetime import datetime
from suds.client import Client
import traceback
import json
KEY_FLAG = "flag"
KEY_ERRORMSG = "errorMsg"
KEY_DATA = "data"
FLAG_SUCCESS = "success"
FLAG_FAIL = "fail"
FAIL_CONNECTED = {KEY_FLAG : FLAG_FAIL, KEY_ERRORMSG : u"接口服务器连接失败!"}
FAIL_SYNCED = {KEY_FLAG : FLAG_FAIL, KEY_ERRORMSG : u"接口获取数据异常!"}
PROJECT_TYPE = {
'implementation': u'实施',
'research':u'研发',
}
PROJECT_INFO_URL = "http://xxxxxxx:8082/services/XXXXPageInquiryWXProjectInfoSrv?wsdl"
MEMBER_INFO_URL = "http://xxxxxxx:8082/services/XXXXPageInquiryWXProtMemberInfoSrv?wsdl"
OPPORTUNITY_INFO = "http://xxxxxxx:8082/services/XXXXPageInquiryWXOpportunityInfoSrv?wsdl"
MSG_HEADER = "MsgHeader"
INPUT = "Input"
import time
if __name__ == '__main__':
#引用初始化
client = Client(PROJECT_INFO_URL)print client
# 声明的头信息,用factory的方式实例化
inputs = client.factory.create("Input")inputs.current_page = 1
inputs.total_record = None
inputs.last_update_date_from = "2005-01-01 00:00:00"
inputs.last_update_date_to = "2015-12-17 23:59:59"
inputs.page_size = 1000
#传递对象参数
#做一个MsgHeader类,定义类属性
MsgHeader = client.factory.create("MsgHeader")MsgHeader.SOURCE_SYSTEM_ID = "1"
MsgHeader.SOURCE_SYSTEM_NAME = "HRMS"
MsgHeader.USER_ID = "1"
MsgHeader.USER_NAME = "1"
MsgHeader.SUBMIT_DATE = "2015-12-18 00:00:00"
try:
results = []
#返回对象, 返回wsdl传过来的process对象
output = client.service.process(MsgHeader, inputs)print output
print output.total_record, output.total_page
#得到OutputCollection对象的OutputItem值
#list(set()) 去重
results = list(set(output.OutputCollection.OutputItem))print len(results)
except Exception:
traceback.print_exc()
client.last_received()
class Call_interface():
url = None
def __init__(self, url):
self.url = url
def getClient(self):
client = None
try:
client = Client(self.url)
except Exception:
traceback.print_exc()
return client
def getMsgHeader(self, SOURCE_SYSTEM_ID, SOURCE_SYSTEM_NAME, USER_ID, USER_NAME, SUBMIT_DATE):
client = self.getClient()
if not client:
return FAIL_CONNECTED
#设置请求头msgHeader
msgHeader = client.factory.create(MSG_HEADER)msgHeader.SOURCE_SYSTEM_ID = SOURCE_SYSTEM_ID
msgHeader.SOURCE_SYSTEM_NAME = SOURCE_SYSTEM_NAME
msgHeader.USER_ID = USER_ID
msgHeader.USER_NAME = USER_NAME
msgHeader.SUBMIT_DATE = SUBMIT_DATE
return msgHeader
#得到请求头带的值input
def getInput(self, page_size, end_date, start_date="2017-11-01 00:00:00", current_page=1, total_records=None):
client = self.getClient()
if not client:
return FAIL_CONNECTED
input = client.factory.create(INPUT)
input.current_page = current_page
input.total_record = total_records
input.last_update_date_from = start_date
input.last_update_date_to = end_date
input.page_size = page_size
return input
def process(self, msg_header, input):
client = self.getClient()
output = client.service.process(msg_header, input)
return output