Codificación de URL

Cómo codificar URL para evitar errores con SKUs.

¿Qué es la codificación de URL?

Una URL consta únicamente de caracteres ASCII. Algunos caracteres ASCII tienen significados especiales en las URL y otros están prohibidos. Si desea una URL con caracteres ASCII prohibidos o no ASCII, o una URL que use caracteres especiales sin invocar su significado especial, debe codificar la URL.

¿Cómo codifico una URL?

Para codificar una URL, convierta cada byte de la codificación UTF-8 de cada carácter especial, prohibido y no ASCII en un número hexadecimal de dos dígitos y coloque un signo de porcentaje antes de cada uno de estos números hexadecimales de dos dígitos.

Ejemplo:

Las URL no permiten la carácter barra invertida (\ ) . Si desea utilizar la URI /products/pricing/v0/listings/Item\1/offers, debe escapar de la barra invertida. El valor hexadecimal de \ en UTF-8 es 5C, entonces \ se reemplaza por %5C en la URI, haciendo /products/pricing/v0/listings/Item%5C1/offersel URI codificado .

En la práctica, esto se hace con mayor frecuencia mediante programación con funciones integradas disponibles en muchos lenguajes de programación. Aquí hay un ejemplo en Java:

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.io.UnsupportedEncodingException*;*

 // Method to encode a SKU using `UTF-8` encoding scheme
  private static String encodeSKU(String sSKU) {
    try {
      return URLEncoder.encode(sSKU, StandardCharsets.UTF_8.toString());
    } catch (UnsupportedEncodingException ex) {
      e*.*printStackTrace*();*
    }
  }

Para obtener más información sobre la codificación de URL, consulte RFC 3986, Section 2.1. Percent Encoding.

❗️

SKU con comas

SP-API no puede distinguir la coma codificada (%2C ) valores de coma literal (, ). Esto evita que se utilicen SKU con comas en parámetros de consulta delimitados por comas, ya que las comas en esos SKU no se pueden distinguir de las comas que separan los argumentos.

Cuando una coma está presente en un SKU, debe buscar el SKU individualmente.