Codificación de URL

Cómo codificar las URL para evitar errores con los SKU.

¿Qué es la codificación de URL?

Una URL se compone únicamente de caracteres ASCII. Algunos caracteres ASCII tienen significados especiales en las URL y otros están prohibidos. Si quieres una URL con caracteres ASCII prohibidos o caracteres que no sean ASCII, o una URL que utilice caracteres especiales sin invocar su significado especial, debes codificar la URL.

¿Cómo codifico una URL?

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

Ejemplo:

Las URL no admiten el carácter de barra invertida (\). Si quieres usar el URI /products/pricing/v0/listings/Item\1/offers, debes escapar la barra invertida. El valor hexadecimal de \ en UTF-8 es 5C, entonces \ se sustituye por %5C en el URI, haciendo que /products/pricing/v0/listings/Item%5C1/offers sea el URI codificado.

En la práctica, la mayoría de las veces esto se hace mediante programación con funciones integradas disponibles en muchos lenguajes de programación. Aquí tienes 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*();* } }

For more information about URL encoding, refer to RFC 3986, Section 2.1. Percent Encoding.

❗️

SKU con comas

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

Cuando hay una coma en un SKU, debes buscar el SKU de forma individual.


¿Te ha ayudado esta página?