2015-09-26 23 views
4

這裏是我的設置:如何在Python eBay SDK開發添加多張圖片

的Python 3.4

使用貿易API

嘗試調用eBay的 「VerifyAddItem」

我在PicURL中標記了出現錯誤的位置,並且我嘗試使用多個網址發佈多張圖片。我現在只是嘗試兩張圖片,比如說http://i.ebayimg.com/picture1http://i.ebayimg.com/picture2。 (我知道,這些都不是真實的圖片,但是這不是我有問題的一部分)

eBay的API之證件規定To specify multiple pictures, send each URL in a separate, PictureDetails.PictureURL element. The first URL passed in will be the Gallery image and appears on the View Item page.所以,我想通過以下兩個行無果:

"PictureDetails": {"PictureURL": ["http://i.ebayimg.com/picture1", 
            "http://i.ebayimg.com/picture2"]} 

"PictureDetails": [{"PictureURL": "http://i.ebayimg.com/picture1"}, 
        {"PictureURL": "http://i.ebayimg.com/picture2"}] 

我從eBay的連接下面的錯誤,分別爲:

VerifyAddItem: Class: RequestError, Severity: Error, Code: 37, Input data is invalid. 
Input data for tag <Item.PictureDetails.PictureURL[2]> is invalid or missing. Please 
check API documentation. 

VerifyAddItem: Class: RequestError, Severity: Error, Code: 37, Input data is invalid. 
Input data for tag <Item.PictureDetails[2].PictureURL> is invalid or missing. Please 
check API documentation. 

不幸的是,我已經江郎才盡。請幫忙!這裏是完整的字典,不要擔心邏輯,因爲我已經證實其他一切正常。

api = Trading(config_file="ebay.yaml", warnings=False) 

    myitem = { 
     "Item": { 
      "Title": Title, 
      "Description": Description, 
      "PrimaryCategory": {"CategoryID": p.CategoryValue}, 
      "StartPrice": str(p.Price_sbox.value()), 
      "CategoryMappingAllowed": "true", 
      "Country": "US", 
      "ConditionID": CatID, 
      "ConditionDescription": p.CondDetail_tedit.toPlainText(), 
      "Currency": "USD", 
      "DispatchTimeMax": "1", 
      "ListingDuration": "GTC", 
      "ListingType": "FixedPriceItem", 
      "PaymentMethods": "PayPal", 
      "PayPalEmailAddress": PayPal, 
      ############################# 
      ###This is where I get the Error 
      ############################# 
      "PictureDetails": PicURL, 
      "PostalCode": ZipCode, 
      "Quantity": str(p.Quantity_sbox.value()), 
      "ReturnPolicy": { 
       "ReturnsAcceptedOption": "ReturnsAccepted", 
       "RefundOption": "MoneyBack", 
       "Description": "14 days money back, you pay return shipping", 
       "ReturnsWithinOption": "Days_14", 
       "ShippingCostPaidByOption": "Buyer" }, 
      "ShippingDetails": { 
       "ShippingType": "Calculated", 
       "PaymentInstructions": "1 business days of handling time, usually shipped next day. Make sure your address is correct, especially when shipping to foreign countries.", 
       "ShippingServiceOptions": { 
        "FreeShipping": FreeShip, 
        "ShippingService": ShipService 
        }, 
       "CalculatedShippingRate": {"OriginatingPostalCode": ZipCode} }, 
      "ShippingPackageDetails": { 
       "MeasurementUnit": "English", 
       "WeightMajor": str(p.WeightLbs_sbox.value()), 
       "WeightMinor": str(p.WeightOz_sbox.value()), 
       "PackageDepth": str(p.DimensionH_sbox.value()), 
       "PackageLength": str(p.DimensionL_sbox.value()), 
       "PackageWidth": str(p.DimensionW_sbox.value()), 
       "ShippingPackage": "PackageThickEnvelope"}, 
      "ShipToLocations": "Worldwide", 
      "Site": "US", 
      "SKU": p.ItemID_ledit.text() } } 
    IntShip = [] 
    boolint = False 
    if(p.IntShip1_chbox.isChecked()): 
     IntShip.append('USPSPriorityMailInternational') 
     boolint = True 
    if(p.IntShip2_chbox.isChecked()): 
     IntShip.append('USPSPriorityMailInternationalLargeFlatRateBox') 
     boolint = True 
    if(boolint): 
     myitem['Item']['ShippingDetails']['ShippingServiceOptions']['InternationalShippingServiceOption'] = IntShip 
    if(p.BestOffer_chbox.isChecked()): 
     myitem['Item']['BestOfferDetails'] = {'BestOfferEnabled': 'true'} 

    #print(myitem) 
    api.execute('VerifyAddItem', myitem) 
    print("%s" % api.response.content) 

except ConnectionError as e: 
    for node in api.response.dom().findall('ErrorCode'): 
     print("error code: %s" % node.text) 
    if 37 in api.response_codes(): 
     print("Invalid data in request") 
    print(e) 
    print(e.response.dict()) 

回答

4

好吧沒關係...我覺得愚蠢......既然我仍然在沙箱中工作,我通過測試的照片,其中一些在列表PicURL的URL並不指向有效的照片。

如果任何人得到這些錯誤,第一格式是正確的:

"PictureDetails": {"PictureURL": ["http://i.ebayimg.com/picture1", 
            "http://i.ebayimg.com/picture2"]}