Einen Bericht abrufen
So erhalten Sie Berichte von Amazon, um Verkautspartnern bei der Verwaltung ihres Geschäfts zu helfen.
API-Version: 2021-06-30
Holen Sie sich die Informationen, die zum Abrufen eines Berichtsdokuments erforderlich sind, und laden Sie dann den Bericht herunter.
Schritt 1: Für den Berichtsabruf erforderliche Informationen abfragen
Rufen Sie den getReportDocument
-Vorgang zum Abrufen der Informationen auf, die zum Abrufen des Inhalts eines Berichtsdokuments erforderlich sind. Dazu gehören eine vorsignierte URL für das Berichtsdokument und optional der Komprimierungsalgorithmus, der verwendet wird, wenn der Inhalt des Berichtsdokuments komprimiert wurde.
-
Rufen Sie den
getReportDocument
-Vorgang auf, wobei die folgenden Parameter übergeben werden:Name Beschreibung Erforderlich reportDocumentId
Die Kennung für das Berichtsdokument.
Typ: ZeichenfolgeJa getReportDocument
-Beispiel:GET https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/documents/DOC-b8b0-4226-b4b9-0ee058ea5760Eine erfolgreiche Antwort umfasst Folgendes:
Name Beschreibung reportDocumentId
Die Kennung für das Berichtsdokument. Diese Kennung ist nur in Kombination mit einer Verkäufer-ID eindeutig. url
Eine vorsignierte URL für das Berichtsdokument. Diese URL läuft nach fünf Minuten ab.
Typ: ZeichenfolgecompressionAlgorithm
Falls vorhanden, wurde der Inhalt des Berichtsdokuments mit dem bereitgestellten Algorithmus komprimiert.
Typ: enum (Komprimierungsalgorithmus)getReportDocument
Beispiel für eine Antwort:{ "reportDocumentId": "DOC-b8b0-4226-b4b9-0ee058ea5760", "url": "https://d34o8swod1owfl.cloudfront.net/SampleResult%2BKey%3DSample%2BINITVEC%3D58+fa+bf+a7+08+11+95+0f+c1+a8+c6+e0+d5+6f+ae+c8" } -
Speichern Sie das
url
undcompressionAlgorithm
(optionale Eigenschaft) zur Verwendung in Schritt 2.
Schritt 2: Bericht herunterladen
Sie müssen den Bericht mithilfe der in Schritt 1 zurückgegebenen Informationen herunterladen. Der folgende Beispielcode zeigt, wie Sie ein Berichtsdokument im Klartext-Format herunterladen. Sie können die im Beispielcode demonstrierten Prinzipien auch als Leitfaden für die Erstellung von Anwendungen in anderen Programmiersprachen oder für andere Dokumenttypen (XML, CSV, TSV usw.) verwenden.
-
Verwenden Sie folgende Eingaben für den Beispielcode:
- Die Werte
url
und optionalcompressionAlgorithm
aus dem vorherigen Schritt sind Argumente für die Parameterurl
undcompressionAlgorithm
derdownload
-Methode derDownloadExample
-Klasse.
- Die Werte
Hinweis
Hinweis: Sie müssen die Verschlüsselung immer im Ruhezustand aufrechterhalten. Unverschlüsselte Berichtsinhalte dürfen niemals auf der Festplatte gespeichert werden, auch nicht vorübergehend, da Berichte vertrauliche Informationen enthalten können. Der Beispielcode, den wir zur Verfügung stellen, demonstriert dieses Prinzip.
Beispielcode (Java)
// DownloadExample.java
// This example is for use with the Selling Partner API for Reports, Version: 2021-06-30
// and the Selling Partner API for Feeds, Version: 2021-06-30
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.zip.GZIPInputStream;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.squareup.okhttp.ResponseBody;
/**
* Example that downloads a document.
*/
public class DownloadExample {
public static void main(String args[]) {
String url = "<URL from the getFeedDocument/getReportDocument response>";
String compressionAlgorithm = "<compressionAlgorithm from the getFeedDocument/getReportDocument response>";
DownloadExample obj = new DownloadExample();
try {
obj.download(url, compressionAlgorithm);
} catch (IOException e) {
//Handle exception here.
} catch (IllegalArgumentException e) {
//Handle exception here.
}
}
/**
* Download and optionally decompress the document retrieved from the given url.
*
* @param url the url pointing to a document
* @param compressionAlgorithm the compressionAlgorithm used for the document
* @throws IOException when there is an error reading the response
* @throws IllegalArgumentException when the charset is missing
*/
public void download(String url, String compressionAlgorithm) throws IOException, IllegalArgumentException {
OkHttpClient httpclient = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.get()
.build();
Response response = httpclient.newCall(request).execute();
if (!response.isSuccessful()) {
System.out.println(
String.format("Call to download content was unsuccessful with response code: %d and message: %s",
response.code(), response.message()));
return;
}
try (ResponseBody responseBody = response.body()) {
MediaType mediaType = MediaType.parse(response.header("Content-Type"));
Charset charset = mediaType.charset();
if (charset == null) {
throw new IllegalArgumentException(String.format(
"Could not parse character set from '%s'", mediaType.toString()));
}
Closeable closeThis = null;
try {
InputStream inputStream = responseBody.byteStream();
closeThis = inputStream;
if ("GZIP".equals(compressionAlgorithm)) {
inputStream = new GZIPInputStream(inputStream);
closeThis = inputStream;
}
// This example assumes that the download content has a charset in the content-type header, e.g.
// text/plain; charset=UTF-8
if ("text".equals(mediaType.type()) && "plain".equals(mediaType.subtype())) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, charset);
closeThis = inputStreamReader;
BufferedReader reader = new BufferedReader(inputStreamReader);
closeThis = reader;
String line;
do {
line = reader.readLine();
// Process line by line.
} while (line != null);
} else {
//Handle content with binary data/other media types here.
}
} finally {
if (closeThis != null) {
closeThis.close();
}
}
}
}
}
Updated 12 days ago