public void GetItemDetailsTest()
        {
            User user = new User();
            user.EBayUserTokenExpirationDate = DateTime.Now.AddMonths(3);
            user.EBayUserToken = "AgAAAA**AQAAAA**aAAAAA**N5ewSw**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4CoAJCLowidj6x9nY+seQ**UUsBAA**AAMAAA**f/Kor0HEN77MiUcmv086pizupwLl//2qkvRIrryhDXZtT62f7GO0mSLp9ufBbXEAKkaqUERJqeJqE+dmn16sWrpWr4BqLNOwlWIXsm75nAsEhtD36H9vb04cubUqvXVMHrsXnLAMIdAit2LHgrxYCZKo/BsvrbIVrn/1llC7l3/TiBHUskO51/+sEd3LSjqHj5Bzn6SLTLRvDetRPA0K2KfjhvYFh3wI0tsKnsdczx72+MzHfAHoD7snNtffmHSkiG5HuVXgSGogiT1S38ICcSevuQ89FXXypS5QaAz2a6M+xnTdNFMoayXhvNT1d/Mhh425FExSvzntyLO0Ct6j04Ct0ibzMhJwTScHW9cOyXx8mRrsnNQKjxjlL3Y0dvllqbAwdqai+M8v1A7z1zBD4jdWkDVrOH3U4jpbfwZefBhVQZRvkQ97qRdqGFX+Kz5smmnBJSnQYsIcEaIe4lSkWq+ESiU+V14q0MkwnJBY9FBuHSwio1YF9DafnnJc0j9Me5MqicYb+aO8LO/mt76DOLQfJwQCu9KOPsM/nGvaW1IKxSqQa1uMr/2zDs7iTsolLasjmlu3pWjpeKow9mnZ3P9S47UgSh2LkzV70oUCEX7uelFdeuBzJgNNX+clI7y24jUAznQ+BcVi3U67+UVPt0/BTi6ZIVRCbvI7WyLVniVa3eCSXZtsLW85HjsjsgX2SAItywulWncA9znH6OqbzMAjQMWWSBginJhIjadfmstxYGvcOPLMKTq/cMhPeAGb";
            user.UserIPAddress = "82.101.25.10";

            ServiceEBay target = new ServiceEBay(user, true); // TODO: Initialize to an appropriate value

            bool backEndObject = false; // TODO: Initialize to an appropriate value
            long itemID = 110048891589; // TODO: Initialize to an appropriate value
            eBayItemData expected = new eBayItemData(); // TODO: Initialize to an appropriate value
            eBayItemData actual;
            actual = target.GetItemDetails(itemID);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
        /// <summary>
        /// Should be also using GetItemStatus
        /// </summary>
        /// <param name="itemID"></param>
        /// <param name="nbRetry"></param>
        /// <param name="returnJustPrice"></param>
        /// <returns></returns>
        private eBayItemData GetItemDetails(long itemID, int nbRetry, bool returnJustPrice)
        {
            Logger.CreateLog("Beginning__GetItemDetails", itemID.ToString(), null, EnumLogLevel.INFO);

            string callname = "GetItem";

            try
            {

                this.BuildService(callname);

                GetItemRequestType request = new GetItemRequestType();
                request.Version = _version;
                request.ItemID = itemID.ToString();

                List<string> outputs = new List<string>();
                outputs.Add("Item.SellingStatus.CurrentPrice");
                outputs.Add("Item.ListingType");

                if (!returnJustPrice)
                {
                    outputs.Add("Item.ListingDetails.EndTime");
                    outputs.Add("Item.ListingDetails.ViewItemURL");
                    outputs.Add("Item.Title");
                    outputs.Add("Item.PictureDetails");
                    outputs.Add("Item.Description");
                    outputs.Add("Item.Seller.UserID");
                    outputs.Add("Item.ShippingDetails");
                    outputs.Add("Item.PaymentMethods");
                }

                request.OutputSelector = outputs.ToArray();

                GetItemResponseType response = this.service.GetItem(request);

                if (response.Ack == AckCodeType.Success)
                {
                    if (response.Item.ListingType != ListingTypeCodeType.Chinese)
                        throw new Exception("This listing type can't be sniped.");
                    // http://developer.ebay.com/devzone/xml/docs/Reference/eBay/types/ListingTypeCodeType.html

                    eBayItemData itemData = new eBayItemData();

                    if (response.Item.SellingStatus != null) itemData.ItemCurrentHighestBid = response.Item.SellingStatus.CurrentPrice.Value;
                    if (response.Item.SellingStatus != null) itemData.ItemCurrencyCode = (EnumCurrencyCode)response.Item.SellingStatus.CurrentPrice.currencyID;
                    itemData.ItemID = itemID;

                    if (!returnJustPrice)
                    {
                        itemData.ItemEndDate = ServiceTimeZone.eBayDateTimeToUniversal(response.Item.ListingDetails.EndTime);
                        itemData.ItemURL = response.Item.ListingDetails.ViewItemURL;
                        itemData.ItemTitle = response.Item.Title;

                        if (response.Item.PictureDetails != null && response.Item.PictureDetails.PictureURL != null && response.Item.PictureDetails.PictureURL.ToList().Count() > 0)
                            itemData.ItemPictureURL = response.Item.PictureDetails.PictureURL[0];

                        if (string.IsNullOrEmpty(itemData.ItemPictureURL) && !string.IsNullOrEmpty(response.Item.PictureDetails.GalleryURL))
                            itemData.ItemPictureURL = response.Item.PictureDetails.GalleryURL;

                        itemData.ItemDescription = response.Item.Description;
                        itemData.ItemSellerID = response.Item.Seller.UserID;

            #warning to be verified
                        itemData.ItemShippingInfo = response.Item.ShippingDetails.ToString();

                        itemData.ItemPaymentOptions = new List<string>();
                        foreach (BuyerPaymentMethodCodeType paymentMethod in response.Item.PaymentMethods.ToArray())
                            itemData.ItemPaymentOptions.Add(paymentMethod.ToString());
                    }

                    Logger.CreateLog("Ending__GetItemDetails", itemID.ToString(), null, EnumLogLevel.INFO);

                    return itemData;
                }
                else
                {
                    string error = "";

                    foreach (ErrorType err in response.Errors)
                        error += err.LongMessage;

                    throw new Exception(error);
                }

            }
            catch (Exception ex)
            {
                if (nbRetry < ServiceParametersHelper.nbAPIRetry())
                    this.GetItemDetails(itemID, nbRetry + 1, returnJustPrice);
                else
                {
                    Logger.CreateLog("Error__GetItemDetails", itemID.ToString(), ex, EnumLogLevel.ERROR);
                    throw ex;
                }
            }

            throw new Exception("Unknow error when loading the item.");
        }