Tôi muốn gửi một tiêu đề đến máy chủ Apache của tôi trên một hộp Linux. Làm thế nào tôi có thể đạt được điều này thông qua một cuộc gọi curl?
Tôi muốn gửi một tiêu đề đến máy chủ Apache của tôi trên một hộp Linux. Làm thế nào tôi có thể đạt được điều này thông qua một cuộc gọi curl?
Câu trả lời:
ĐƯỢC:
với JSON:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource
với XML:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource
BÀI ĐĂNG:
Để đăng dữ liệu:
curl --data "param1=value1¶m2=value2" http://hostname/resource
Để tải lên tập tin:
curl --form "fileupload=@filename.txt" http://hostname/resource
Bài viết HTTP RESTful:
curl -X POST -d @filename http://hostname/resource
Để đăng nhập vào một trang web (auth):
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
Bạn có thể thấy yêu cầu cuộn tròn được gửi bằng cách thêm -v
tùy chọn.
Trong PHP :
curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue'));
hoặc bạn có thể đặt nhiều:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('HeaderName:HeaderValue', 'HeaderName2:HeaderValue2'));
Sử dụng -H or --header
.
Trang nam: http://curl.haxx.se/docs/manpage.html#-H
NHẬN (nhiều tham số):
curl -X GET "http://localhost:3000/action?result1=gh&result2=ghk"
hoặc là
curl --request GET "http://localhost:3000/action?result1=gh&result2=ghk"
hoặc là
curl "http://localhost:3000/action?result1=gh&result2=ghk"
hoặc là
curl -i -H "Application/json" -H "Content-type: application/json" "http://localhost:3000/action?result1=gh&result2=ghk"
Tôi sử dụng Postman.
Thực hiện bất cứ cuộc gọi nào bạn muốn làm. Sau đó, người đưa thư cung cấp một công cụ tiện dụng để hiển thị mã curl.
Bạn cũng có thể gửi nhiều tiêu đề, dữ liệu (ví dụ JSON) và chỉ định phương thức Gọi (POST, GET) vào một cuộc gọi CUrl như thế này:
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' \
...... nhiều tiêu đề hơn ................
-d '{
"JsonExArray": [
{
"json_prop": "1",
},
{
"json_prop": "2",
}
]
}'
Tôi đã chuyển từ curl sang Httpie ; cú pháp trông như:
http http://myurl HeaderName:value
Trong môi trường anaconda thông qua các cửa sổ, các lệnh nên là: GET, ví dụ:
curl.exe http://127.0.0.1:5000/books
Đăng hoặc Patch dữ liệu cho ex:
curl.exe http://127.0.0.1:5000/books/8 -X PATCH -H "Content-Type: application/json" -d '{\"rating\":\"2\"}'
PS: Thêm dấu gạch chéo ngược cho dữ liệu json để tránh loại lỗi này => Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)
và sử dụng curl.exe
thay vì curl
chỉ để tránh vấn đề này:
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