Suds Python数组响应

0 投票
1 回答
3209 浏览
提问于 2025-04-18 10:00

我正在使用Python 2.7和SUDS库。我想知道如何只打印这些数组或对象中的URL。我希望能够选择任何一个数组或对象(比如URL),然后打印出它们的完整列表,而不是仅仅显示服务器已经返回的响应。

这是我的请求:

from suds.client import Client
import logging



# Specify Login Information
developer_key = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
password = 'xxxxxxxx'
account_guid = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
sku = ['A30938', 'B84727']

# Specify URLs
wsdl_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v6/InventoryService.asmx?WSDL'
service_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v6/InventoryService.asmx'

# Initialize client.
client = Client(wsdl_url, location = service_url)

# Pass login information
login = client.factory.create('APICredentials')
login.DeveloperKey = developer_key
login.Password = password
client.set_options(soapheaders=login)

# Initiate request
for i in sku:

    result = client.service.GetInventoryItemImageList(account_guid, i)

    # Print the result to the screen.
    print result

这是结果:

(APIResultOfArrayOfImageInfoResponse){
   Status = "Success"
   MessageCode = 0
   ResultData = 
      (ArrayOfImageInfoResponse){
         ImageInfoResponse[] = 
            (ImageInfoResponse){
               PlacementName = "ITEMIMAGEURL1"
               FolderName = None
               Url = "d3t71aa9ase5oz.cloudfront.net/12801479/images/bear_white.jpg"
            },
            (ImageInfoResponse){
               PlacementName = "ITEMIMAGEURL2"
               FolderName = None
               Url = "d3t71aa9ase5oz.cloudfront.net/12801479/images/bear_black.jpg"
            },
      }
 }
(APIResultOfArrayOfImageInfoResponse){
   Status = "Success"
   MessageCode = 0
   ResultData = 
      (ArrayOfImageInfoResponse){
         ImageInfoResponse[] = 
            (ImageInfoResponse){
               PlacementName = "ITEMIMAGEURL1"
               FolderName = None
               Url = "http://d3t71aa9ase5oz.cloudfront.net/12801479/images/m89851.jpg"
            },
      }
 }

1 个回答

0

只需要遍历这些项目,然后获取你想要的属性。可以这样做:

for item in response:
    for data in item.ResultData:
        print data.Url

撰写回答