Python webservice
来源:互联网 发布:海康威视网络设置 编辑:程序博客网 时间:2024/05/18 09:20
Python WebServices
Python作为客户端访问WebService,推荐使用suds来完成
suds官方Document:
https://fedorahosted.org/suds/wiki/Documentation
一、访问WebService
以ALM系统为例:
ALM-getItemsByNamedQuery.py
from suds.client import Clientssl.wrap_socket = sslwrap(ssl.wrap_socket)url = 'https://alm.tclcom.com:7003/webservices/10/2/Integrity/?wsdl'client = Client(url)print clientitemType = client.factory.create('ns5:NamedQuery')item_list = ['Project', 'ID', "Summary", 'IPR Value', "Severity", "Priority", "Assigned User", "Created By", 'Attachments', ]itemType.Username = "******"itemType.Password = "******"itemType.InputField = item_listitemType.QueryName = "shinelite12"print itemTyperesp = client.service.getItemsByNamedQuery(itemType)print resp
运行时,提示错误:
urllib2.URLError:
resp:查询结果集
二、解析resp
ItemList = { <ItemList> element: name="Item" <StatusResponse> element: name="return" attribute: name="transactionId" }
for Item in resp.Item: #只提取Item信息,忽略< StatusResponse >
Item = { <Item> element:name="ItemField", name="Attachment", ref="tns:RelatedItem", attribute: name="State", name="Type", name="ItemId", <StatusResponse> element: name="return" attribute: name="transactionId" }
for ItemField in Item.ItemField: #只提取ItemField,忽略Attachment,RelatedItem,< StatusResponse >
<xs:element maxOccurs="unbounded" minOccurs="0" name="ItemField" type="tns:ItemFieldResponse"/>ItemFieldResponse = {<ItemFieldBase>xs:choice element: shorttext tns:NullableShortString longtext tns:NullableString group tns:NullableString state xs:string type xs:string project tns:NullableString siProject tns:NullableString double tns:NullableDouble boolean tns:NullableBoolean integer tns:NullableInteger pick {value xs:string } relatioinship {value xs:string} date tns:NullableString dateTime tns:NullableString UserRecord { user/fullname/email tns:NullableString}attribute: name="Name"
ItemField[0]: _Name 即InputField字段
ItemField[1]: xs:choice element
从上面分析可知,element 类型种类有xs:string, tns:NullableString, NullableShortString, UserRecord
对type(ItemField[1])类型分析,推测只有三种类型,已经验证过的有
project < type 'instance' > integer < type 'instance' > shorttext < type 'instance' > UserRecord < type 'list' > state < class 'suds.sax.text.Text'>dateTime < type 'instance' >longtext < type 'instance' >
备注:有时候ALM系统更改了字段名,导致resp获取出错
三、源代码
itemsByIDsType = client.factory.create('ns5:GetItemsByIDsType') print itemsByIDsType itemsByIDsType.Username = "******" itemsByIDsType.Password = "******" itemsByIDsType.ItemId = item_list # itemsByIDsType.InputField = "R&D or Region Current State Spend Time" # resp = client.service.getItemsByIDs(itemsByIDsType) for item_Text in item_list_Text: itemsByIDsType.InputField = item_Text resp = client.service.getItemsByIDs(itemsByIDsType) print resp item_dict = {} for item_list_Text_content in item_list_Text: item_dict[item_list_Text_content] = "" for item_list_Int_content in item_list_Int: item_dict[item_list_Int_content] = 0 for item_list_Email_content in item_list_Email: item_dict[item_list_Email_content] = "" for item_list_DateTime_content in item_list_DateTime: item_dict[item_list_DateTime_content] = None for item_field in item.ItemField: # print item_field # Item_field[0] is _Name; Item_field[1] is content if isinstance(item_field[1], suds.sax.text.Text): item_value = str(item_field[1]) elif isinstance(item_field[1], list): if isinstance(item_field[1][0].email, suds.sax.text.Text): item_value = str(item_field[1][0].email) else: item_value = item_field[1][0].email.value else: item_value = item_field[1].value # item_dict[item_field[0]] = item_value if isinstance(item_value, suds.sax.text.Text): item_value = item_value.encode("utf-8") item_dict[item_field[0]] = item_value # print item_dict quality = Quality() quality.Project = item_dict["Project"] quality.Severity = item_dict["Severity"] quality.Priority = item_dict["Priority"] quality.State = item_dict["State"] quality.Function = item_dict["Function"] quality.Component = item_dict["Component"] quality.Country_Area = item_dict["Country/Area"] quality.Regression = item_dict["Regression"] quality.Homo = item_dict["Homo"] quality.RegionCurrentStateSpendTime = item_dict["R&D or Region Current State Spend Time"] quality.VAL_Refuse = item_dict["VAL Refuse"] quality.Reporter_Department = item_dict["Reporter Department"] quality.SW_Release = item_dict["SW Release"] quality.Operators = item_dict["Operators"] quality.Perso_ID = item_dict["Perso ID"] quality.Resolved_By = item_dict["Resolved By"] quality.Summary = item_dict["Summary"] quality.All_CEA_Comments = item_dict["All CEA Comments"] quality.ID = item_dict["ID"] quality.IPR_Value = item_dict["IPR Value"] quality.Assigned_User = item_dict["Assigned User"] quality.Created_By = item_dict["Created By"] quality.Reported_By = item_dict["Reported By"] quality.Created_Date = item_dict["Created Date"] quality.Modified_Date = item_dict["Modified Date"] quality.VAL_Refuse_Date = item_dict["Val Refused Date"] quality.Time_To_Set_New = item_dict["Time To Set New"] quality.Time_To_Set_Assigned = item_dict["Time To Set Assigned"] quality.Time_To_Set_Open = item_dict["Time To Set Open"] quality.Time_To_Set_Resolved = item_dict["Time To Set Resolved"] quality.Time_To_Set_Verified_SW = item_dict["Time To Set Verified_SW"] quality.Time_To_Set_Delivered = item_dict["Time To Set Delivered"] quality.Time_To_Set_Verified = item_dict["Time To Set Verified"] quality.Time_To_Set_Closed = item_dict["Last Time To Set Closed"] quality.Release = item_dict["Release"] quality.Verified_By = item_dict["Verified By"] quality.Original_Brother = item_dict["Original Brother"] quality.Team = item_dict["Team"] quality.save()
0 0
- Python webservice
- Python webservice
- 使用python开发WebService
- Python ZSI 访问 WebService
- python webservice hello world
- python客户端访问WebService
- Python访问WebService接口
- Python调用WebService
- python开发webservice例子
- python suds webservice
- python 访问webservice
- python 调用 webservice
- Python 测试webservice
- python调用java webservice
- python REST Webservice
- java调用python的webservice
- python使用suds调用webservice
- python使用suds调用webservice
- SAP系统核心模块都有哪些?
- Selective Search for Object Detection
- jenkins持续集成python项目
- PHP 如何自动发送邮件?
- leetcode题解分析_223. Rectangle Area
- Python webservice
- 大数加法
- 图片保存到指定的路径
- 编程语言只是工具
- linux安全配置
- Log4j使用指南
- 聊聊Web上传
- mat工具MemoryAnalyzer进行分析java内存溢出hprof文件
- android 6.0 权限bug、权限处理