Como enviar arquivos usando post num webservice REST
-
Ola
estou com uma necessidade de enviar arquivos via post.
o serviço seria consumido via curl da seguinte maneira:
curl -k -X POST --header ""Authorization: Bearer <token>"" "<url>" -H "accept: /" -H "Content Type: multipart/form-data" -H "Titulo-Documento: Edital" -H "Tipo-Documento-Id: 2" -F "[email protected];type=application/pdf"
outro servico seria:
curl -k -X POST --header "Authorization: Bearer <token>" "<url>" -H "accept: /" -H "Content-Type: multipart/form-data" -H 'Titulo-Documento: nome_do_arquivo' -H 'Tipo-Documento-Id: 1' --form ‘compra=@”/home/objeto.json" ’ --form ‘documento=@”arquivo.pdf” ’como eu faço isto usando a funcao rest - consumir webservice.
Grato
-
@carlos-oliveira Boa tarde.
Você deve utilizar a função Enviar arquivo via POST.
Só informar os parâmetros que a função precisa, já existe um tópico aqui no fórum.
-
@janpier-dos-santos mas como eu mandaria os demais parametros? veja que no cabecalho vao varios parametros, e no form deverao ir dois parametros:
opcao 1: --form ‘compra=@”/home/objeto.json" ’ --form ‘documento=@”arquivo.pdf” ’
opcao 2: -F "[email protected];type=application/pdf"
-
@carlos-oliveira De acordo a documentação da função é passado um mapa com chave e valor do parâmetro.
-
@janpier-dos-santos obrigado. vou testar
-
@janpier-dos-santos fiz como vc orientou: !
ao executar da o erro:
{"timestamp":"2022-01-26T18:13:03.828+00:00","status":400,"error":"Bad Request","message":"Required request header 'Titulo-Documento' for method parameter type String is not present","path":"/pncp-api/v1/orgaos/01620744000171/compras/2022/1/arquivos"}
Quando executo no curl:
curl -X 'POST'
'https://treina.pncp.gov.br/api/pncp/v1/orgaos/01620744000171/compras/2022/1/arquivos'
-H 'accept: /'
-H 'Titulo-Documento: doc,pdf'
-H 'Tipo-Documento-Id: 1'
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1NjFhMmUx...'
-H 'Content-Type: multipart/form-data'
-F '[email protected];type=application/pdf' -vfunciona normalmente, veja o resultado:
Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 201
< access-control-allow-origin: *
< access-control-allow-methods: GET,PUT,POST,DELETE,OPTIONS
< access-control-allow-credentials: true
< access-control-allow-headers: Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin,
< location: https://treina.pncp.gov.br/api/pncp/v1/orgaos/01620744000171/compras/2022/1/arquivos/5
< x-content-type-options: nosniff
< x-xss-protection: 1; mode=block
< cache-control: no-cache, no-store, max-age=0, must-revalidate
< pragma: no-cache
< expires: 0
< x-frame-options: DENY
< content-length: 0
< date: Wed, 26 Jan 2022 18:05:37 GMT
< strict-transport-security: max-age=15768000 -
corrigindo a imagem...
-
@carlos-oliveira Neste caso, o serviço precisa também que alguns parâmetros sejam definidos no cabeçalho da requisição. E essa função não tem essa funcionalidade.
-
@janpier-dos-santos seria complicado implementar isto?
-
@carlos-oliveira Bom dia.
Acredito que não.
-
Eu tenho certa urgencia com isto.
Como solicito isto formalmente a softwell? Abro uma chamada no suporte?
-
@carlos-oliveira Sim.
-
Boa tarde, estou com o mesmo problema que o Carlos, exatamente o mesmo serviço. Sabe me informar se já existe essa função funcionando?
-
@Fabrício-E, bom dia.
Sim, a mesma função
Enviar Arquivo via Post
agora possui suporte a definição de parâmetros no cabeçalho.Cordialmente.