Как правильно отправить заголовок типа содержимого в curl?

7591
Dave

Я использую Mac 10.9.5 с оболочкой bash. Я пытаюсь отправить запрос через curl, но продолжаю получать ошибки, когда пытаюсь установить заголовок типа контента. Ниже я пытаюсь

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

но curl выплевывает сообщение «curl: (6) Не удалось устранить ошибку« Content-Type »хоста». Ниже приведен полный вывод:

* 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 

Как правильно отправить заголовок типа содержимого с помощью curl?

1

1 ответ на вопрос

2
bertieb

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

Using the -H parameter, as you specify:

-H "Content-Type: application/json" 

On the other hand, you have also specified the -o (output to file) option, without specifying a file:

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.

(from man curl)

So the command becomes:

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

(NB I have also replaced smart quotes in the above command as they have made their way into your question)

Should submit the header and output (to output.txt) as you specify. You could also leave off the -o output.txt parameter if you do not require that. Although the man curl page doesn't seem to specify it, in testing -v cannot be mixed with -o.

Привет, я больше не получаю эту ошибку, но в файле «output.txt» ничего нет. Dave 8 лет назад 0
@Dave Может показаться, что `-v` и` -o` нельзя использовать вместе; если вы хотите выводить в файл, используйте `-o`; если вы хотите `-v`erbose вывод, используйте перенаправление файлов (`> output.txt`) bertieb 8 лет назад 0

Похожие вопросы