2017-04-11 2 views
1

Ich versuche Amazon MWS-API von meiner Net-Anwendung für den Zugriff auf Produkte-API Section-Client-Bibliothek - C# (https://developer.amazonservices.com/doc/products/products/v20111001/cSharp.html/138-8219342-3408216)MWS Amazon Empfang MalformedInput auf GetMyFeesEstimate

Alles funktioniert gut, mit Ausnahme von GetMyFeesEstimate Anrufen. Ich benutze diese Methode aus Beispiel:

public GetMyFeesEstimateResponse InvokeGetMyFeesEstimate() 
    { 
     // Create a request. 
     GetMyFeesEstimateRequest request = new GetMyFeesEstimateRequest(); 
     string sellerId = "example"; 
     request.SellerId = sellerId; 
     string mwsAuthToken = "example"; 
     request.MWSAuthToken = mwsAuthToken; 
     FeesEstimateRequestList feesEstimateRequestList = new FeesEstimateRequestList(); 
     request.FeesEstimateRequestList = feesEstimateRequestList; 
     return this.client.GetMyFeesEstimate(request); 
    } 

Und ich Artikel zu FeesEstimateRequestList wie folgt hinzu:

feesEstimateRequestList.FeesEstimateRequest.Add(new FeesEstimateRequest 
     { 
      MarketplaceId = marketplaceId, 
      IdType = "ASIN", 
      IdValue = "B0078LENZC", 
      PriceToEstimateFees = new PriceToEstimateFees { ListingPrice = new MoneyType { Amount = 30.49M, CurrencyCode = "GBP" }, Shipping = new MoneyType { Amount = 3.5M, CurrencyCode = "GBP" }, Points = new Points { PointsNumber = 0 } }, 
      Identifier = "request_" + Guid.NewGuid().ToString(), 
      IsAmazonFulfilled = false 
     }); 

Aber ständig MalformedInput Fehler ohne Meldung erhalten, die beschreiben, was falsch ist:

<ErrorResponse 
xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"> 
<Error> 
    <Type>Sender</Type> 
    <Code>MalformedInput</Code> 
</Error> 
<RequestId>f79b9147-90d7-4ea2-b51c-d6c37c6a1bd0</RequestId> 
</ErrorResponse> 

Haben Sie jemanden Ideen, wie es funktioniert?

Antwort

0

Ich habe gefunden, Lösung:

Aufgrund meiner OS regionalen Einstellungen, hatte Dezimaltrennzeichens im Preis festgelegt wird, um Komma, statt Punkt wenn Parameter-String zu konvertieren.

Ich muss Methode putValue von MwsAQCall Klasse wie folgt ändern:

private void putValue(object value) 
    { 
     if (value==null) 
     { 
      return; 
     } 
     if (value is IMwsObject) 
     { 
      parameterPrefix.Append('.'); 
      (value as IMwsObject).WriteFragmentTo(this); 
      return; 
     } 
     string name = parameterPrefix.ToString(); 
     if (value is DateTime) 
     { 
      parameters.Add(name, MwsUtil.GetFormattedTimestamp((DateTime)value)); 
      return; 
     } 
     string valueStr = value.ToString(); 
     if (value is decimal) 
     { 
      valueStr = valueStr.Replace(",", "."); 
     } 
     if (valueStr==null || valueStr.Length==0) 
     { 
      return; 
     } 
     if (value is bool) 
     { 
      valueStr = valueStr.ToLower(); 
     } 
     parameters.Add(name, valueStr); 
    } 
Verwandte Themen