Qual é a maneira correta de enviar o cabeçalho do tipo de conteúdo no curl?

1

Estou usando o Mac 10.9.5 com o bash shell. Estou tentando enviar uma solicitação por meio de curl, mas continuo recebendo erros quando tento definir o cabeçalho do tipo de conteúdo. Abaixo eu tento

davea$ curl -v -o -H "Content-Type: application/json" -X POST -d '{"username”:”username”,”password”:”password”}’ http://localhost:8080/myproject/login

, mas o curl retrocede um "curl: (6) Não foi possível resolver o erro 'Content-Type' do host. Abaixo está a saída completa:

* getaddrinfo(3) failed for Content-Type:80
* Couldn't resolve host 'Content-Type'
* Closing connection 0
curl: (6) Couldn't resolve host 'Content-Type'
*   Trying ::1...
* Connected to localhost (::1) port 8080 (#1)
> POST /myproject/login HTTP/1.1
> User-Agent: curl/7.40.0
> Host: localhost:8080
> Accept: */*
> Content-Length: 40
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 40 out of 40 bytes
< HTTP/1.1 302 Found
< Server: Apache-Coyote/1.1
< 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
< Set-Cookie: JSESSIONID=B980765C84EA5759F743D1AAE8E189D0; Path=/myproject/; HttpOnly
< Location: http://localhost:8080/myproject/login?error
< Content-Length: 0
< Date: Mon, 06 Jul 2015 16:03:37 GMT
< 
* Connection #1 to host localhost left intact

Qual é a maneira correta de enviar o cabeçalho do tipo de conteúdo por meio de curl?

    
por Dave 06.07.2015 / 18:04

1 resposta

2

What is the correct way to submit the content-type header via curl?

Usando o parâmetro -H , conforme você especifica:

-H "Content-Type: application/json"

Por outro lado, você também especificou a opção -o (saída para arquivo), sem especificar um arquivo:

If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (>), -o [file] or similar.

(de man curl )

Então o comando se torna:

$ curl -o output.txt -H "Content-Type: application/json" -X POST -d '{"username":"username","password":"password"}' http://localhost:8080/myproject/login

(NB eu também substituí as citações inteligentes no comando acima como eles fizeram o seu caminho em sua pergunta)

Deve enviar o cabeçalho e a saída (para output.txt ) conforme você especificar. Você também pode deixar o parâmetro -o output.txt se não exigir isso. Embora a página man curl não pareça especificá-la, no teste -v não pode ser misturada com -o .

    
por 06.07.2015 / 18:10