Form-data HTML e Campo Answer

a API espera um arquivo sendo enviado como multipart/form-data , como se fosse enviado por um formulário HTML, com um campo do tipo file com o nome answer . Considere isso ao enviar o arquivo"

Eu estou muito perdida em relação a isso, preciso criar um arquivo HTML e integrá-lo com meu código de alguma forma? É a primeira vez que tento fazer algo do tipo. Como eu especifico esse campo com o nome “answer”?

Olá @Ferret71b, tudo bem?

Não, você não precisa criar um arquivo HTML pra fazer essa integração, é como se você fosse “anexar” o arquivo answer.json na sua requisição HTTP. Dependendo da linguagem que você estiver utilizando, basicamente você adicionará um parametro a sua requisição com a chave ‘answer’ e o valor será o arquivo answer.json.

Caso não esteja muito claro, você pode me falar em qual linguagem você está tentando resolver o problema que eu tento recomendar algo que te ajude, pode ser?

Abraços

Estou utilizando python. Como fazer?

Desde já agradeço.

1 Curtida

Olá @Condor667, para Python você pode tentar utilizar o “requests” para fazer o envio da requisição.

No link abaixo tem alguns exemplos:

Olá, estou tentando fazer em python

Oi, eu fiz em html com criação de um Formulário HTML (Ajax) com um botão de envio, devido a informação do texto da descrição: como se fosse enviado por um formulário HTML, com um campo do tipo file com o nome answer ., e estou tendo problemas no envio. Dá erro no Postman:

{“code”:“not_found”,“error”:"\u003cnot_found\u003e ",“message”:“Erro processando solução”}

O código de request no javascript, é desta forma que coloquei, tá faltando coisa aí?

function doSubmit() {
  var input1 = document.getElementById("file");
  var request = new XMLHttpRequest();
  request.open('POST', "https://api.codenation.dev/v1/challenge/dev-ps/submit-solution?token= coloquei o meu token");
  request.setRequestHeader('content-type', 'multipart/form-data');
  request = requests.post('https://api.codenation.dev/v1/challenge/dev-ps/submit-solution?token=aí coloquei o meu token', files=answer);
  request.send({
    "file": file
  });
}

E se não é para salvar como answer.html é para salvar em qual extensão?

Envia sem salvar em nenhuma extensão?

1 Curtida

Olá @Panthere03, tudo bem?

No final do seu código em:
request.send({
“file”: file
});

tenta trocar por

request.send({
“answer”: file
});

Pois o nome do parametro esperado é answer.

Abraços

Oi, eu modifiquei, mas ainda dá o mesmo erro de envio do Postman.

No Postman não está aceitando nenhum formato que eu envio em form-data.

Qual é o formato de extensão de envio que é aceito para enviar o arquivo?

1 Curtida

Olá, no postman basta enviar com a key “answer”, selecionar como file e selecionar o arquivo “answer.json”, não precisa colocar content-type, testa e avisa se funcionou , tudo bem?

Abraços

Oi, eu fiz desta forma e mesmo assim tá aparecendo este erro. Validei o json no jsonlint:

{“code”:“invalid”,“error”:"challenge.Service.CalculateProblemSolvingScoreDev: \u003cinvalid\u003e ",“message”:“Erro processando solução”}

1 Curtida

Olá @Panthere03,

Esse erro geralmente ocorre quando você está tentando submeter um desafio diferente do obtido na URL:

https://api.codenation.dev/v1/challenge/dev-ps/generate-data?token=SEU_TOKEN

Tenta pegar novamente o desafio na URL acima, resolver e então enviar a solução para esse novo desafio ta bom?

Abraços

Oi, eu tentei enviar para esta URL: https://api.codenation.dev/v1/challenge/dev-ps/generate-data?token=E coloquei o meu token, mas mesmo assim dá erro no Postman.

1 Curtida

Olá @Panthere03, essa URL é para rodar utilizando o método GET sem precisar passar parametro algum além do TOKEN na propria URL.
Essa URL vai lhe retornar o desafio que deve ser resolvido e enviado pela outra URL do submit.

Abraços

:nerd_face: até q fim. Seria mais fácil ter colocado na descrição do texto que era pra ter dado um GET para pegar a rota da cifra de césar que foi designada para o meu token.

Quando coloca no texto a informação: Escrever programa, em qualquer linguagem de programação, que faça uma requisição HTTP e não diz que é GET, então eu tinha anteriormente feito em qualquer rota a cifra, e colocado só o POST para enviar mesmo. :woman_shrugging:

Vcs então quando determinam qual a rota que cada usuário deve fazer pelo token, ele já dá a nota do score automaticamente. :thinking: