2016-03-29 5 views
4

ich ein kleines Problem haben, wenn sie versuchen GetLowestPricedOffersForSKU zu nennen, ich habe die Antwort erhalten:GetLowestPricedOffersForSKU fehlgeschlagen Verarbeitung Argumente

Failed processing arguments of org.jboss.resteasy.spi.metadata

ich andere Funktionen im Produkt Api anrufen und sie funktionieren gut, nur um den obigen Fehler auf diese Funktion.

Ich habe im Netz nach der Antwort gesucht, kann aber nichts finden, was damit zusammenhängt, hat jemand eine Idee, warum ich das bekomme?

Übrigens funktioniert alles gut im MWS Scratchpad!

+0

Welche Client-Bibliothek wird verwendet? –

Antwort

0

Dieser Code funktionierte für mich. Ich hoffe, es wird jemandem helfen.

<?php 

    require_once('.config.inc.php'); 

    // More endpoints are listed in the MWS Developer Guide 
    // North America: 
    $serviceUrl = "https://mws.amazonservices.com/Products/2011-10-01"; 
    // Europe 
    //$serviceUrl = "https://mws-eu.amazonservices.com/Products/2011-10-01"; 
    // Japan 
    //$serviceUrl = "https://mws.amazonservices.jp/Products/2011-10-01"; 
    // China 
    //$serviceUrl = "https://mws.amazonservices.com.cn/Products/2011-10-01"; 


    $config = array (
     'ServiceURL' => $serviceUrl, 
     'ProxyHost' => null, 
     'ProxyPort' => -1, 
     'ProxyUsername' => null, 
     'ProxyPassword' => null, 
     'MaxErrorRetry' => 3, 
    ); 

    $service = new MarketplaceWebServiceProducts_Client(
      AWS_ACCESS_KEY_ID, 
      AWS_SECRET_ACCESS_KEY, 
      APPLICATION_NAME, 
      APPLICATION_VERSION, 
      $config); 


    // @TODO: set request. Action can be passed as MarketplaceWebServiceProducts_Model_GetLowestPricedOffersForSKU 
    $request = new MarketplaceWebServiceProducts_Model_GetLowestPricedOffersForSKURequest(); 
    $request->setSellerId(MERCHANT_ID); 
    $request->setMWSAuthToken(MWSAUTH_TOKEN); 
    $request->setMarketplaceId(MARKETPLACE_ID); 
    $request->setSellerSKU($sellerSKU); 
    $request->setItemCondition($ItemCondition); 
    // object or array of parameters 
    invokeGetLowestPricedOffersForSKU($service, $request); 


     function invokeGetLowestPricedOffersForSKU(MarketplaceWebServiceProducts_Interface $service, $request) 
     { 
      try { 
      $response = $service->GetLowestPricedOffersForSKU($request); 

      echo ("Service Response\n"); 
      echo ("=============================================================================\n"); 

      $dom = new DOMDocument(); 
      $dom->loadXML($response->toXML()); 
      $dom->preserveWhiteSpace = false; 
      $dom->formatOutput = true; 
      echo $dom->saveXML(); 
      echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n"); 

     } catch (MarketplaceWebServiceProducts_Exception $ex) { 
      echo("Caught Exception: " . $ex->getMessage() . "\n"); 
      echo("Response Status Code: " . $ex->getStatusCode() . "\n"); 
      echo("Error Code: " . $ex->getErrorCode() . "\n"); 
      echo("Error Type: " . $ex->getErrorType() . "\n"); 
      echo("Request ID: " . $ex->getRequestId() . "\n"); 
      echo("XML: " . $ex->getXML() . "\n"); 
      echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "\n"); 
     } 
    } 
    ?> 
+0

Hallo Paul, Danke für die Info, ich werde es ausprobieren und sehen, was passiert. – Potman100

3

Buchung für den Fall, dass jemand anderes dazu kommt und ist so verwirrt wie ich war. Es gibt einen fundamentalen Unterschied zu fast allen Amazon MWS-Anfragen, außer diesem bestimmten. Alle anderen Anfragen akzeptieren technisch die Parameter als Abfrageparameter anstelle von POST-Daten. Das Scratchpad schlägt sogar vor, dass es so funktioniert (obwohl das MWS Scratchpad die Daten tatsächlich auch als Post-Datenfelder sendet).

+1

Und wie verhält sich das? – YakovL

0

MWS benötigt die POST-Daten, die als Formularparameter übergeben werden, anstatt als Abfragezeichenfolge für einige Operationen. Ansonsten kotzt es einen Failed processing arguments of org.jboss.resteasy.spi.metadata Stil 400 Bad Request Fehler für einige Operationen wie diese (GetMyFeesEstimate ist eine andere, die darunter leidet).

Zum Beispiel, wenn Sie die folgenden POST-Anfrage in Guzzle 6 dann haben Sie wahrscheinlich den Fehler bekommen würden:

$response = $client->request('POST', 'https://mws.amazonservices.com/Products/2011-10-01/?AWSAccessKeyId=YOURAWSACCESSKEY&Action=GetLowestPricedOffersForASIN&SellerId=YOURSELLERID&MWSAuthToken=amzn.mws.fghsffg-4t44e-hfgh-dfgd-zgsdbfe5erg&SignatureVersion=2&Timestamp=2017-07-09T15%3A45%3A18%2B00%3A00&Version=2011-10-01&Signature=bCasdxXmYDCasdaXBhsdgse4pQ6hEbevML%2FJvzdgdsfdy2o%3D&SignatureMethod=HmacSHA256&MarketplaceId=ATVPDKIKX0DER&ASIN=B007EZK19E'); 

Um dies zu beheben, können Sie es als Formulardaten, wie in diesem Beispiel Guzzle 6 vorlegen würden:

$response = $client->request('POST', 'https://mws.amazonservices.com/Products/2011-10-01', [ 
    'form_params' => [ 
     'AWSAccessKeyId' => 'YOURAWSACCESSKEY', 
     'Action' => 'GetLowestPricedOffersForASIN', 
     'SellerId' => 'YOURSELLERID', 
     'MWSAuthToken' => 'amzn.mws.fghsffg-4t44e-hfgh-dfgd-zgsdbfe5erg', 
     'SignatureVersion' => 2, 
     'Timestamp' => '2017-07-09T15%3A45%3A18%2B00%3A00', 
     'Version' => '2011-10-01', 
     'Signature' => 'bCasdxXmYDCasdaXBhsdgse4pQ6hEbevML%2FJvzdgdsfdy2o%3D', 
     'SignatureMethod' => 'HmacSHA256', 
     'MarketplaceId' => 'ATVPDKIKX0DER', 
     'ASIN' => 'B007EZK19E', 
    ] 
]);