• 0
Lucas Molina

Problema com modificação de descrição

Question

Boa Noite,

Estou criando uma página web básica usando código javascript para gerenciar as descrições dos meus anúncios. Estou seguindo esse link http://developers.mercadolibre.com/pt-br/descricao-de-produtos/#Adicionar-substituir

Estou tentando usar o código abaixo para modificar a descrição de um anúncio ativo:

itemId - ID do anúncio (MLB#########)

newDesc - string contendo o código HTML da nova descrição

function setAdDescription(itemId, newDesc) {
	var url = "https://api.mercadolibre.com/items/" + itemId + "/description?access_token=" + ACCESS_TOKEN;

	var requestBody = {
		text: newDesc
	}

	var request = new XMLHttpRequest();
	request.open("PUT", url, true);
	request.setRequestHeader("Content-Type", "application/json");

	request.onload = function () {
		console.log(itemId + " SUCCESS");
	};

	request.send(requestBody);
}

E estou recebendo o seguinte erro:

XMLHttpRequest cannot load https://api.mercadolibre.com/items/MLB766981409/description?access_token=[VALID_ACCESS_TOKEN] Response for preflight has invalid HTTP status code 404

Já verifiquei a URL e ela está correta. Enviando uma requisição GET para o mesmo endereço consigo obter a descrição atual do anúncio.

Olhando a aba de network do Chrome vi que a resposta da requisição OPTIONS do preflight retorna todos os headers corretos do CORS (Access-Control-Allow-Headers/Methods/Origin)

 

Alguém sabe me informar qual o problema? Existe alguma restrição para rodar esse tipo de requisição client-side?

Estou executando essa página a partir do domínio localhost, existe alguma restrição quanto a isto?

 

Obrigado por qualquer ajuda

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0
11 hours ago, rodrigojob said:

Mande junto o plain_text

Porque você não usa o SDK?

Tentei enviar o plain_text também ("text" e "plain_text" juntos no mesmo JSON), mas tive o mesmo erro.

Não acho que o problema esteja no body da requisição, porque o envio está falhando durante o preflight, o PUT nem chega a ser enviado. O browser envia a requisição OPTIONS do preflight do CORS e já retorna o código de erro. Por isso pensei que o erro tivesse a ver com alguma configuração do server.

 

Não usei o SDK porque não achei a API do Mercado Livre tão complicada a ponto de precisar de um SDK e desse jeito eu tenho maior controle sobre o que o meu código está fazendo. Fazer a implementação usando requisições HTTP simples também faz com que seja mais fácil pra mim portar o código para outra plataforma mais pra frente (como Android por exemplo).

 

EDIT: Acabei de fazer mais alguns testes. Fiz duas requisições GET para a mesma URL para obter a descrição atual do anúncio. Em uma das requisições incluí o header "Content-Type" e na outra não. A requisição sem o header funcionou perfeitamente e me retornou a descrição atual do anúncio.

A outra requisição, usando o header "Content-Type" (ou seja, usando CORS)  me retorna o mesmo erro 404 durante o preflight.

Alguém pode me confirmar se a API do Mercado Livre suporta CORS?

Edited by Lucas Molina

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...