curl 使用发送POST GET请求 HEADER设置

curl 使用发送POST GET请求 HEADER设置

文章目录

  • Get请求
  • POST请求
    • [1. application/x-www-form-urlencoded](#1. application/x-www-form-urlencoded)
    • [2. Multipart/form-data](#2. Multipart/form-data)
    • [3. application/json](#3. application/json)
    • [4. text/xml 文件内容作为提交的数据](#4. text/xml 文件内容作为提交的数据)
  • [curl 设置自定义HEADER 头](#curl 设置自定义HEADER 头)
  • 注意事项:
  • shell批处理
  • 外传

Get请求

get请求偏简单,我们主要看看post的请求处理

shell 复制代码
curl -X GET 127.0.0.1:8080/api/getInfo?name=zhangsan

POST请求

使用curl 发送POST请求

HTTP 的POST请求通常用于提交数据,一般有四种常见的POST提交数据方式。做Web后端开发时,不可避免的要自己发送请求来调试接口,如何使用curl工具来进行各种方式的POST请求。

1. application/x-www-form-urlencoded

最常见的POST请求,form表单。 使用curl进行请求很简单,示例如下:

shell 复制代码
curl -X POST 127.0.0.1:8080/api/getInfo -d "name=zhangsan" 

2. Multipart/form-data

这种请求一般涉及文件上传。后端对这种类型的请求处理也更复杂一些。

shell 复制代码
curl 127.0.0.1:8080/api/multipart -F raw=@raw.data -F name=zhangsan

3. application/json

shell 复制代码
curl -XPOST 127.0.0.1:8080/api/json --header "Content-Type : application/json" -d '{"name":"zhangsan"}' 

这种方式跟 application/x-www-form-urlencoded 类型的POST请求类似, -d 参数值是 JSON字符串,并且多了一个 Content-Type: application/json 指定发送内容的格式。

Web后端解析后,得到的结构都是 name=zhangsan 键值对。

4. text/xml 文件内容作为提交的数据

如果要提交的数据比较多,不方便写在命令行里,那么那么可以把数据内容写到文件中,通过 -d @filename 的方式来提交数据。

这是 -d 参数的一种使用方式。但是跟 multipart/form-data 中上传文件的POST不是一回事。 @ 符号表明后面跟的是文件名,要读取这个文件的内容作为 -d 的参数。

// 创建数据文件 data.json

{

"name" : "zhangsan",

"age" : 18,

"habit" : ["zz", "xxx"]

}

请求示例如下:

shell 复制代码
curl  -XPOST 127.0.0.1:8080/api/json --header "Content-Type : application/json"  -d @data.json

如果要用 application/x-www-form-urlencoded 方式提交,后端解析出同样的数据,那么 -d 参数是这样的, 注意数组参数的写法 。

// data.txt

name=zhangsan&age=18&habit[]=zz&habit[]=xxx

请求示例如下:

shell 复制代码
curl  -XPOST 127.0.0.1:8080/api/test -d @data.txt 

curl -XPOST 127.0.0.1:8080/api/test -d 'name=zhangsan&age=18&habit[]=zz&habit[]=xxx'

curl请求http结果保存到文件中

shell 复制代码
curl --header "Content-type : application/json" "hostname:port/path" > ./result.json

curl 设置自定义HEADER 头

Curl 是一个强大的命令行工具,它可以通过网络将信息传递给服务器或者从服务器获取数据。

支持很多传输协议,尤其是 HTTP/HTTPS 以及其他诸如FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS 协议等。

当你使用curl 向一个URL发送HTTP请求时,会使用一个默认的包含必要的头部字段(如: User-Agent,Host,Accept)的HTTP头。

在一些HTTP请求中,需要覆盖默认的HTTP头或者添加自定义的头部字段。为了解决这些问题,curl提供一个简单的方法来完全控制传出HTTP请求的HTTP头。

需要的参数是 -H 或者 --header。

为了定义多个HTTP头部字段,-H 选项可以在curl命令中多次指定。示例如下:

shell 复制代码
curl -H "host:220.181.38.149" -H "Accept-language:es" -H "Cookie:token=xxxx" www.baidu.com -v

注意事项:

header头、冒号和值质检不能有空格

自定义的Header头,需要加在标准头后面。

对于"User-Agent","Cookie","Host" 这类标准的HTTP头字段,通常会有另一种设置方法。curl命令提供了特定的选项来针对这些字段进行设置:

-A (or ----user-anget): 设置 User-Agent字段

-b(or ----cookie) : 设置 Cookie字段

-e(or ----referer):设置 Referer 字段

示例如下,两种方式是等效的:

curl -H "User-Agent: brower" hostname

curl -A "brower" hostname

shell批处理

一般情况下,我们需要编写shell文件做数据的批处理

简单的例子

initData.sh

shell 复制代码
reqUrl=http://192.168.1.145:8080/api/updateXXX
reqAuth="Bearer xxxxxxxxx"
reqType="application/json"

curl -XPOST $reqUrl -H "Content-Type:$reqType" -H "Authorization:$reqAuth" -d '{"identifier":"1","roomNo":"3","name":"105","floorNumber":"03楼一层","numberOfPeople":"30"}'
echo 
curl -XPOST $reqUrl -H "Content-Type:$reqType" -H "Authorization:$reqAuth" -d '{"identifier":"1","roomNo":"4","name":"贵宾室","floorNumber":"03楼一层","numberOfPeople":"18"}'
echo 
curl -XPOST $reqUrl -H "Content-Type:$reqType" -H "Authorization:$reqAuth" -d '{"identifier":"1","roomNo":"5","name":"108(","floorNumber":"03楼一层","numberOfPeople":"40"}'
echo 

外传

😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥
相关推荐
茶馆大橘2 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
lmy_t5 分钟前
C++之第十二课
开发语言·c++
马剑威(威哥爱编程)9 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
我码玄黄20 分钟前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
MuseLss31 分钟前
HashMap高频面试知识点
java·开发语言·哈希算法
tyler-泰勒33 分钟前
初始c++:入门基础(完结)
java·开发语言·c++
憨憨小白38 分钟前
函数的高级应用
开发语言·python·青少年编程·少儿编程
重生之我要进大厂1 小时前
LeetCode 876
java·开发语言·数据结构·算法·leetcode
Amo Xiang1 小时前
Python 常用模块(四):shutil模块
开发语言·python
时之彼岸Φ1 小时前
Web:HTTP包的相关操作
网络·网络协议·http