HTTP POST request usando Curl: por que nada funciona?

2

Quero enviar um formulário com as seguintes informações:

<form enctype="mutlipart/form-data" method="post" action="/command">
  <input tyep="submit" value=" Generate Snapshot " name="GENERATE_SNAPSHOT" ></input>
</form>

Eu tento fazer essa solicitação usando uma página da web (chrome), na guia "rede", observo que:

'request URL:http://170.10.10.20:8888/command'
Request Mehthod:POST
Status Code:200 OK

Request Payload:
-------WebKitFormBoundaryLhRbxtNE7XU71JAD
Content-Disposition: form-data; name="GENERATE_SNAPSHOT"

 Generate Snapshot
-------WebKitFormBoundaryLhRbXtNE7Xu71JAD----

O comando My Curl parece com o seguinte:

curl -f "GENERATE_SNAPSHOT=%20Generate%20Snapshot%20" http://170.10.10.20:8888/command

Mas o valor de retorno parece impreciso porque me retorna algo parecido com:

<html><head><head><META HTTP -QUIIV="EXPIRES" CONTENT="TEXT/HTML; 
.....(and so on)

Por que isso não está funcionando?

    
por andy_ttse 28.03.2015 / 06:15

3 respostas

1

Como você não está enviando uma solicitação POST , mas uma solicitação GET e o que deveria ter sido o corpo de sua solicitação POST é ignorada por curl. Além disso, a opção -f é usada para falhar silenciosamente nos erros do servidor, você está procurando por -F , o que força o uso de Content-type: multipart/form-data em sua solicitação POST .

Use em vez disso:

curl -XPOST \
    -F 'GENERATE_SNAPSHOT= Generate Snapshot ' \
    "http://170.10.10.20:8888/command"
    
por 28.03.2015 / 14:57
0

É -F não -f .
Além disso, no Chrome, você pode clicar com o botão direito do mouse na solicitação na guia "Copiar como cURL". Isso adicionará a solicitação exata que o Chrome fez à sua área de transferência, pronta para ser executada via cURL.

    
por 28.03.2015 / 14:56
0

Para fazer um POST, você precisa definir o método de solicitação.

curl -X POST -f ... http://...
    
por 28.03.2015 / 14:57

Tags