简体   繁体   中英

Suds Python Array Response

Using Python 2.7 and SUDS. How would I print just URL from these arrays/objects? I'd like to be able to pick any of the arrays/objects (such as URL) and just print an entire list of them instead of/or in addition to the response already being given from the server.

Here is my request:

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

And here is the results:

(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"
            },
      }
 }

Just iterate through the items and get the attribute you want. Something like:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM