3

PHP で Amazon MWS API を使用して処理されたフィード ファイルの結果を取得する際に問題が発生しています。正確には、getFeedSubmissionResult クラスを使用しています。問題は、ドキュメントの指示に従ってAPIを使用すると、アクセスできるクラスによって読み取られる関連データがないことです(またはそう思われます)。私の質問は、Amazon が送り返してきた未加工の XML ファイルを取得して、自分のコンピューター上のファイルに保存するにはどうすればよいかということです。

私はMWSで使用されているコードをたどり、AmazonからXMLファイルを取得して解析し、それをファイルに保存しようとしている場所を見つけようとしましたが、うまくいきませんでした。誰かがこれを修正するように私に指示してくれれば、私は深く感謝します.

だからこれは私がやっていることです:

MWS のサンプルで提供されている getFeedSubmissionResultSample.php を使用しました。おそらく、これにより、処理されたアイテムの数と処理されたアイテムの数を示すデータが得られるはずです。しかし、そうではありません。そこで、応答変数の print_r を実行しようとしました:

function invokeGetFeedSubmissionResult(MarketplaceWebService_Interface $service,$request)  {
  try {
          $response = $service->getFeedSubmissionResult($request);
          echo "<br />Var dump here: <pre>";
          print_r($response);
            echo ("<pre>Service Response\n");
            echo ("=============================================================================\n");

            echo("        GetFeedSubmissionResultResponse\n");
            if ($response->isSetGetFeedSubmissionResultResult()) {
              $getFeedSubmissionResultResult = $response->getGetFeedSubmissionResultResult(); 
              echo ("            GetFeedSubmissionResult\n");
              if ($getFeedSubmissionResultResult->isSetContentMd5()) {
                echo ("                ContentMd5\n");
                echo ("                " . $getFeedSubmissionResultResult->getContentMd5() . "\n");
              }
            }
            if ($response->isSetResponseMetadata()) { 
                echo("            ResponseMetadata\n");
                $responseMetadata = $response->getResponseMetadata();
                if ($responseMetadata->isSetRequestId()) 
                {
                    echo("                RequestId\n");
                    echo("                    " . $responseMetadata->getRequestId() . "\n");
                }
            } 

            echo("            ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n");
 } catch (MarketplaceWebService_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");
 }
}

そして、出力は私にこれを与えます:

サービスレスポンス

    GetFeedSubmissionResultResponse
        GetFeedSubmissionResult
            ContentMd5
            G5Sw+2ooONEZU1iQoqdEOQ==
        ResponseMetadata
            RequestId
                f9d4be45-6710-42eb-850e-f437224f9938
        ResponseHeaderMetadata: RequestId: f9d4be45-6710-42eb-850e-f437224f9938, ResponseContext: EM/RH7RHQhLSc47Tj2a2Uv2CGKEfvxaKOijjcaKeoh8dGISci3yqo9OHZs7dpLDIszJVz4Jt4z8=,9SYUaktMzcOG6UyuyhXu/kJPl0gpLeenslL2rkugDLhDYftMleRx1XIexbVWNxuYl7cO6901Foiv Kp7hvaLeAQ==, Timestamp: 2013-06-18T07:29:37.393Z

var_dump の結果は省略しました。これがセキュリティ上の問題を引き起こす可能性があるかどうかわからないためです。しかし、いずれにせよ、var_dump はアクセスできるデータを提供しませんでした。また、クラスとそのメソッドの場所までコードをトレースして、そこからアクセスできるかどうかを確認しましたが、手ぶらで出てきました。

Amazon スクラッチ パッドを使用してこれを行ったので、結果 (つまり、FeedSubmissionId) を呼び出すための適切なパラメーターがあることに注意してください。

あなたの助けは大歓迎です! :)

よろしく、カレブ

4

2 に答える 2

1

ファイルを使用したくない場合。次に、try ステートメントの最後に。
$xml = stream_get_contents($request->getFeedSubmissionResult());

これにより、xml データが $xml に入れられます

于 2015-03-04T03:49:35.793 に答える