1

Я использую 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

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

Используя параметр -H , как вы укажете:

-H "Content-Type: application/json"

С другой стороны, вы также указали опцию -o (вывод в файл) без указания файла:

Если вам нужен индикатор выполнения для запросов HTTP POST или PUT, вам нужно перенаправить вывод ответа в файл, используя shell redirect (>), -o [file] или аналогичный.

(от man curl)

Таким образом, команда становится:

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

(NB. Я также заменил умные кавычки в приведенной выше команде, поскольку они пробились в ваш вопрос)

Должен предоставить заголовок и вывод (в output.txt), как вы укажете. Вы также можете не указывать параметр -o output.txt если вам это не требуется. Хотя страница man curl , похоже, не указывает ее, в тестировании -v нельзя смешивать с -o .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .