Recuperar un reporte
Cómo obtener reportes de Amazon para ayudar a los selling partners a gestionar su negocio.
Versión de la API: 2021-06-30
Obtén la información necesaria para recuperar un documento de reporte y luego descarga el reporte.
Paso 1. Obtener la información necesaria para recuperar el reporte
Llama a la operación getReportDocument
para obtener la información necesaria para recuperar el contenido de un documento de reporte. Esto incluye una URL prefirmada para el documento del reporte y, opcionalmente, el algoritmo de compresión utilizado si el contenido del documento del reporte ha sido comprimido.
- Llame a la operación
getReportDocument
pasando el siguiente parámetro:
El parámetro de la ruta:
Nombre | Descripción | Se requiere |
---|---|---|
reportDocumentId | El identificador del documento de reporte. Tipo: string | Sí |
Ejemplo de solicitud:
GET https://sellingpartnerapi-na.amazon.com/reports/2021-06-30/documents/DOC-b8b0-4226-b4b9-0ee058ea5760
Respuesta
Una respuesta correcta incluye lo siguiente:
Nombre | Descripción |
---|---|
reportDocumentId | El identificador del documento de reporte. Este identificador es único sólo en combinación con un seller ID. |
url | Un pre-firmado URL para el documento de reporte. Esta dirección URL se vence después de 5 minutos. Tipo: string |
compressionAlgorithm | Si está presente, el documento de reporte, los contenidos han sido comprimidos con el algoritmo. Tipo: enum ( CompressionAlgorithm ) |
Respuesta ejemplo:
{
"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"
}
- Guardar el
url
, ycompressionAlgorithm
(propiedad opcional) para utilizar en el Paso 2.
Paso 2. Descargar el reporte
Debes descargar el reporte utilizando la información devuelta en el Paso 1. El siguiente código de ejemplo demuestra cómo descargar un documento de reporte de texto sin formato. También puedes utilizar los principios demostrados en el código de ejemplo como guía para desarrollar aplicaciones en otros lenguajes de programación o para otros tipos de documentos (XML, CSV, TSV, etc.).
-
Utilice el siguiente como insumos para el código de ejemplo:
- Los
url
opcionales ycompressionAlgorithm
los valores del paso anterior son los argumentos para elurl
, ycompressionAlgorithm
los parámetros deldownload
método de la claseDownloadExample
.
- Los
Nota: Siempre debes mantener la encriptación en reposo. El contenido del reporte sin encriptar nunca debe almacenarse en disco, ni siquiera temporalmente, ya que los reportes pueden contener información sensible. El código de ejemplo que proporcionamos demuestra este principio.
El Código De Ejemplo (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 over 1 year ago