Desejo enviar um cabeçalho para o meu servidor Apache em uma caixa Linux. Como conseguir isso por meio de uma chamada de onda?
Desejo enviar um cabeçalho para o meu servidor Apache em uma caixa Linux. Como conseguir isso por meio de uma chamada de onda?
Respostas:
PEGUE:
com JSON:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource
com XML:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource
POSTAR:
Para lançar dados:
curl --data "param1=value1¶m2=value2" http://hostname/resource
Para upload de arquivo:
curl --form "fileupload=@filename.txt" http://hostname/resource
Postagem HTTP RESTful:
curl -X POST -d @filename http://hostname/resource
Para fazer login em um site (autenticação):
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
-H/--header <header>
(HTTP) Extra header to use when getting a web page. You may specify
any number of extra headers. Note that if you should add a custom
header that has the same name as one of the internal ones curl would
use, your externally set header will be used instead of the internal
one. This allows you to make even trickier stuff than curl would
normally do. You should not replace internally set headers without
knowing perfectly well what you're doing. Remove an internal header
by giving a replacement without content on the right side of the
colon, as in: -H "Host:".
curl will make sure that each header you add/replace get sent with
the proper end of line marker, you should thus not add that as a
part of the header content: do not add newlines or carriage returns
they will only mess things up for you.
See also the -A/--user-agent and -e/--referer options.
This option can be used multiple times to add/replace/remove multi-
ple headers.
curl --header "X-MyHeader: 123" www.google.com
Você pode ver a solicitação que a onda enviou adicionando a -v
opção
Em PHP :
curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue'));
ou você pode definir vários:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue', 'HeaderName2:HeaderValue2'));
Use -H or --header
.
Página do manual : http://curl.haxx.se/docs/manpage.html#-H
GET (vários parâmetros):
curl -X GET "http://localhost:3000/action?result1=gh&result2=ghk"
ou
curl --request GET "http://localhost:3000/action?result1=gh&result2=ghk"
ou
curl "http://localhost:3000/action?result1=gh&result2=ghk"
ou
curl -i -H "Application/json" -H "Content-type: application/json" "http://localhost:3000/action?result1=gh&result2=ghk"
Eu uso o Postman.
Execute a chamada que você deseja fazer. Em seguida, o carteiro fornece uma ferramenta útil para mostrar o código de ondulação.
Você também pode enviar vários cabeçalhos, dados (JSON por exemplo) e especificar o método de chamada (POST, GET) em uma única chamada CUrl como esta:
curl -X POST(Get or whatever) \
http://your_url.com/api/endpoint \
-H 'Content-Type: application/json' \
-H 'header-element1: header-data1' \
-H 'header-element2: header-data2' \
...... mais cabeçalhos ................
-d '{
"JsonExArray": [
{
"json_prop": "1",
},
{
"json_prop": "2",
}
]
}'
Eu mudei de curl para Httpie ; a sintaxe se parece com:
http http://myurl HeaderName:value
No ambiente anaconda através do Windows, os comandos devem ser: GET, por exemplo:
curl.exe http://127.0.0.1:5000/books
Poste ou corrija os dados para ex:
curl.exe http://127.0.0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\"rating\":\"2\"}'
PS: adicione barra invertida para dados json para evitar esse tipo de erro => Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)
e use em curl.exe
vez de curl
apenas para evitar esse problema:
Invoke-WebRequest : Cannot bind parameter 'Headers'. Cannot convert the "Content-Type: application/json" value of type
"System.String" to type "System.Collections.IDictionary".
At line:1 char:48
+ ... 0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeWebRequestCommand