下面是我的代码:
#Make the SOAP connection
url = "https://api.channeladvisor.com/ChannelAdvisorAPI/v1/InventoryService.asmx?WSDL"
headers = {'Content-Type': 'text/xml; charset=utf-8'}
ca_client_inventory = Client(url, location="https://api.channeladvisor.com/ChannelAdvisorAPI/v1/InventoryService.asmx", headers=headers)
#Make the SOAP headers
login = ca_client_inventory.factory.create('APICredentials')
login.DeveloperKey = 'REMOVED'
login.Password = 'REMOVED'
#Attach the headers
ca_client_inventory.set_options(soapheaders=login)
synch_inventory_item_list = ca_client_inventory.factory.create('SynchInventoryItemList')
synch_inventory_item_list.accountID = "REMOVED"
array_of_inventory_item_submit = ca_client_inventory.factory.create('ArrayOfInventoryItemSubmit')
for product in products:
inventory_item_submit = ca_client_inventory.factory.create('InventoryItemSubmit')
inventory_item_list = get_item_list(product)
inventory_item_submit = [inventory_item_list]
array_of_inventory_item_submit.InventoryItemSubmit.append(inventory_item_submit)
synch_inventory_item_list.itemList = array_of_inventory_item_submit
#Call that service baby!
ca_client_inventory.service.SynchInventoryItemList(synch_inventory_item_list)下面是它的输出:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://api.channeladvisor.com/webservices/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://api.channeladvisor.com/webservices/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<tns:APICredentials>
<tns:DeveloperKey>REMOVED</tns:DeveloperKey>
<tns:Password>REMOVED</tns:Password>
</tns:APICredentials>
</SOAP-ENV:Header>
<ns1:Body>
<ns0:SynchInventoryItemList>
<ns0:accountID>
<ns0:accountID>REMOVED</ns0:accountID>
<ns0:itemList>
<ns0:InventoryItemSubmit>
<ns0:Sku>1872</ns0:Sku>
<ns0:Title>The Big Book Of Crazy Quilt Stitches</ns0:Title>
<ns0:Subtitle></ns0:Subtitle>
<ns0:Description>Embellish the seams and patches of crazy quilt projects with over 75 embroidery stitches and floral motifs. You'll use this handy reference book again and again to dress up wall hangings, pillows, sachets, clothing, and other nostalgic creations.</ns0:Description>
<ns0:Weight>4</ns0:Weight>
<ns0:FlagStyle/>
<ns0:IsBlocked xsi:nil="true"/>
<ns0:ISBN></ns0:ISBN>
<ns0:UPC>028906018721</ns0:UPC>
<ns0:EAN></ns0:EAN>
<ns0:QuantityInfo>
<ns0:UpdateType>UnShipped</ns0:UpdateType>
<ns0:Total>0</ns0:Total>
</ns0:QuantityInfo>
<ns0:PriceInfo>
<ns0:Cost>0.575</ns0:Cost>
<ns0:RetailPrice xsi:nil="true"/>
<ns0:StartingPrice xsi:nil="true"/>
<ns0:ReservePrice xsi:nil="true"/>
<ns0:TakeItPrice>6.95</ns0:TakeItPrice>
<ns0:SecondChanceOfferPrice xsi:nil="true"/>
<ns0:StorePrice>6.95</ns0:StorePrice>
</ns0:PriceInfo>
<ns0:ClassificationInfo>
<ns0:Name>Books</ns0:Name>
<ns0:AttributeList>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Designer/Author</ns0:Name>
<ns0:Value>Patricia Eaton</ns0:Value>
</ns0:ClassificationAttributeInfo>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Trim Size</ns0:Name>
<ns0:Value></ns0:Value>
</ns0:ClassificationAttributeInfo>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Binding</ns0:Name>
<ns0:Value>Leaflet</ns0:Value>
</ns0:ClassificationAttributeInfo>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Release Date</ns0:Name>
<ns0:Value>11/1/1999 0:00:00</ns0:Value>
</ns0:ClassificationAttributeInfo>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Skill Level</ns0:Name>
<ns0:Value></ns0:Value>
</ns0:ClassificationAttributeInfo>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Pages</ns0:Name>
<ns0:Value>20</ns0:Value>
</ns0:ClassificationAttributeInfo>
<ns0:ClassificationAttributeInfo>
<ns0:Name>Projects</ns0:Name>
<ns0:Value></ns0:Value>
</ns0:ClassificationAttributeInfo>
</ns0:AttributeList>
</ns0:ClassificationInfo>
<ns0:ImageList>
<ns0:ImageInfoSubmit>
<ns0:PlacementName>ITEMIMAGEURL1</ns0:PlacementName>
<ns0:FilenameOrUrl>1872.jpg</ns0:FilenameOrUrl>
</ns0:ImageInfoSubmit>
</ns0:ImageList>
</ns0:InventoryItemSubmit>
</ns0:itemList>
</ns0:accountID>
</ns0:SynchInventoryItemList>
</ns1:Body>
</SOAP-ENV:Envelope>看看它是如何创建两次accountID节点并将整个内容包装在其中的?为什么?我怎么才能让它停下来?!
编辑:我在SUDS输出中注意到了这一点:
(Content){
tag = "accountID"
value =
(SynchInventoryItemList){
accountID = "REMOVED"
itemList =
(ArrayOfInventoryItemSubmit){
InventoryItemSubmit[] =
(InventoryItemSubmit){这是什么标签?检查文档的...going
发布于 2010-05-21 05:16:00
答案是在我的代码的最后一行,我需要这样做:
ca_client_inventory.service.SynchInventoryItemList(accountID, array_of_inventory_item_submit)其中,accountID是保存字符串account id的变量
jortel在#suds IRC聊天室告诉我:"suds提供了一个rpc接口,使用户不受soap消息传递样式的影响“,调用中的新参数也来自于他。希望这对某些人有帮助。
发布于 2010-05-21 00:26:14
这可能是WSDL的问题,也可能是SUDS中的错误。您是否将WSDL的外观与SUDS提供的SOAP信封的外观进行了比较?
发布于 2017-11-21 16:19:29
我也有同样的问题,Philip Haynes在这个link上为me.As做了这件事,Philip Haynes解释说,导致这个问题是因为文档实例的method.soap.input.body.wrapped属性设置为True。这是因为wsdl.py中的Definitions.set_wrapped方法将该值设置为True,而它似乎不应该这样做。
尝试一下,将client unwrap选项设置为False,
my_client = Client(url, unwrap=False)https://stackoverflow.com/questions/2875767
复制相似问题