使用curl执行Http请求

这篇具有很好参考价值的文章主要介绍了使用curl执行Http请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


curl命令

curl(CommandLine Uniform Resource Locator或CommandLine URL),curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。是一个利用URL语法在命令行下工作的文件传输工具。curl设计为:在无用户交互下完成工作。

curl支持的协议包括:DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET、TFTP。

curl用法

curl [options…] <url>

curl参数

参数类型 参数 描述
请求 -H "name: value"
--header "name: value"
(HTTP)添加一个http header(http请求头)
-H "name:"
--header "name:"
(HTTP)移除一个http header(http请求头)
-A "string"
--user-agent "string"
(HTTP)设置HTTP请求头User-Agent参数
服务器通过User-Agent可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断
-e
--referer
(HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面
例如:-e "aiezu.com"相当于“-H "Referer: www.qq.com"”;
-G
--get
(HTTP)使用HTTP GET方式
-d @file
-d "string"
--data "string"
--data-ascii "string"
--data-binary "string"
--data-urlencode "string"
(HTTP)使用HTTP POST方式发送“key/value对”数据
相当于(method="POST",enctype="application/x-www-form-urlencoded")
-d,--data:HTTP方式POST数据
--data-ascii:HTTP方式POST ascii数据
--data-binary:HTTP方式POST二进制数据
--data-urlencode:HTTP方式POST数据(进行urlencode)
如果数据以“@”开头,后紧跟一个文件,将post文件内的内容;
-F name=@file
-F name=<file
-F name=content
--form name=content
--form-string <key=value>
(HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据
相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。
如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如:
curl -F "pic=@pic.jpg" http://aiezu.com;
curl -F "page=@a.html;type=text/html" http://aiezu.com
curl -F "page=@/tmp/a;filename=a.txt" http://aiezu.com
如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com;

--form-string类似于“--form”,但是“@”、“<”无特殊含义;
-X <command>
--request <command>
(HTTP)指定与服务器通信使用的请求方法
如:GET、PUT、POST、DELETE等
cookie -b name=data
--cookie name=data
(HTTP)发送cookie数据到HTTP服务器
数据格式为:"NAME1=VALUE1; NAME2=VALUE2"

如果行中没有“=”,将把参数值当作cookie文件名

这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的;
-c filename
--cookie-jar file name
(HTTP)完成操作后将服务器返回的cookies保存到指定的文件
指定参数值为“-”将定向到标准输出“如控制台”
-j
--junk-session-cookies
(HTTP)告诉curl放弃所有的"session cookies".相当于重启浏览器
响应 -I
--head
(HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)
1. 用于HTTP服务时,获取页面的http头,如:curl -I http://aiezu.com
2. 用于FTP/FILE时,将会获取文件大小、最后修改时间,如:curl -I file://test.txt
-i
--include
(HTTP)输出HTTP头和返回内容
-D <file>
--dump-header <file>
(HTTP)转储http响应头到指定文件

curl举例

GET请求

curl 'http://127.0.0.1:8888/test'

curl -G 'http://127.0.0.1:8888/test'

curl --get 'http://127.0.0.1:8888/test'

curl -X GET 'http://127.0.0.1:8888/test'

curl --request GET 'http://127.0.0.1:8888/test'

当有参数时,请进行URL编码,否则会可能会出错

curl -X GET 'http://127.0.0.1:8888/test2?date=2022-02-22 11:22:33&bo=1'

报错:HTTP Status 505 – HTTP Version Not Supported(因为参数带空格)


正确写法(对空格URL编码)
curl -X GET 'http://127.0.0.1:8888/test2?date=2022-02-22%2011:22:33&bo=1'

POST请求

curl -X POST 'http://127.0.0.1:8888/test2?date=2022-02-22%2011:22:33&bo=11'

curl -X POST 'http://127.0.0.1:8888/test2' -d 'date=2022-02-22 11:22:33&bo=11'

curl -X POST 'http://127.0.0.1:8888/test2' --data 'date=2022-02-22 11:22:33&bo=11'

curl -X POST 'http://127.0.0.1:8888/test2' --data-urlencode 'date=2022-02-22 11:22:33' --data-urlencode 'bo=11'

curl -X POST  -H 'Content-Type: application/x-www-form-urlencoded' 'http://127.0.0.1:8888/test2' --data-urlencode 'date=2022-02-22 11:22:33' --data-urlencode 'bo=11'

POST请求默认Content-Type: application/x-www-form-urlencoded

可以多次使用 -d、–data选项来指定多个传输参数,也可以使用一次 -d、–data选项来指定多个参数。当 Content-Type 为 application/x-www-form-urlencoded 时,-X POST 不可缺省。

POST JSON请求

curl -X POST 'http://127.0.0.1:8888/test8' -H 'Content-Type: application/json' -d '{"code": 123456789,"name": 1646278385537}'

curl 'http://127.0.0.1:8888/test8' -H 'Content-Type: application/json' -d '{"code": 123456789,"name": 1646278385537}'

Content-Type:application/json 时,默认以 POST 方式提交,此时 -X POST 可以缺省。




参考文章:

https://blog.csdn.net/piaoranyuji/article/details/108593757

https://zhuanlan.zhihu.com/p/71888942文章来源地址https://www.toymoban.com/news/detail-611638.html

到了这里,关于使用curl执行Http请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过curl命令分析http接口请求各阶段的耗时等

    一、介绍 Curl是一个用于发送和接收请求的命令行工具和库, 可以用来测试网站能否正常访问、网站URL响应什么状态码、网站响应文本内容、连接接口的请求时间等 curl 是常用的命令行工具,用来请求 Web 服务器,它的名字就是客户端(client)的 URL 工具的意思,如果熟练的话

    2024年02月03日
    浏览(43)
  • 基于curl 使用http多线程下载大文件

    如需完整代码,可评论区留言

    2024年02月04日
    浏览(59)
  • java的amazonaws接口出现无法执行http请求:管道中断

    java使用amazonaws的接口上传文件到minio出现以下异常: com.amazonaws.SdkClientException: Unable to execute HTTP request: Broken pipe (Write failed) at com.amazonaws.http.AmazonHttpClient R e q u e s t E x e c u t o r . h a n d l e R e t r y a b l e E x c e p t i o n ( A m a z o n H t t p C l i e n t . j a v a : 1175 ) a t c o m . a m a z o n a

    2024年02月07日
    浏览(45)
  • 网络:如何使用curl命令测试HTTP代理的有效性

    在我们的日常工作中,代理服务器扮演着重要的角色,它帮助我们访问局部网络无法直接访问的资源。然而,代理的设置和验证有时候会比较复杂。幸运的是,作为一名开发者应该熟悉curl,一个强大的工具来测试和验证代理服务器的设置。本文将引导我们如何使用curl命令测

    2024年04月22日
    浏览(46)
  • javascript二维数组(21)执行异步HTTP(Ajax)请求的方法($.get、$.post、$getJSON、$ajax)

    . g e t 、 .get、 . g e t 、 .post、 g e t J S O N 、 getJSON、 g e t J SON 、 ajax都是jQuery提供的用于执行异步HTTP(Ajax)请求的方法。每个方法都有其特定的用途和区别。 . g e t :这个方法使用 G E T 方式来进行异步请求。其语法结构为: .get:这个方法使用GET方式来进行异步请求。其语

    2024年02月07日
    浏览(52)
  • C++使用HTTP库和框架轻松发送HTTP请求

    使用C++编程发送HTTP请求通常需要使用第三方的HTTP库或框架。在C++中,有几个受欢迎的HTTP库可供选择,例如Curl、Boost.Beast和cpp-httplib。另外,也可以自己实现socket来发送http请求。 (1)安装Curl库 。 对于Debian/Ubuntu系统: 对于RHEL/CentOS系统: 对于macOS系统: (2)编写Curl代码

    2024年02月02日
    浏览(46)
  • HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式

    目录 一.HTTP协议  二.HTTP请求数据格式  请求方式 三.后端响应请求 基于SpringBoot响应数据 请求响应的参数类型 同一响应格式 四.Apifox(postman)使用方法 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议。 HTTP的特点和工作原理如下

    2024年03月09日
    浏览(69)
  • VUE中使用http请求

    VUE版本   1、main.js中添加引用   2、添加proxy跨域访问      3、在自己代码逻辑中调用http请求     4、异常备注 No \\\'Access-Control-Allow-Origin\\\'  通过VUE前端解决方案: 2、添加proxy跨域访问 通过接口后台解决方案:   Response.AddHeader(\\\"Access-Control-Allow-Origin\\\", \\\"*\\\");  

    2024年02月15日
    浏览(28)
  • 【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构

    🙋‍♂️ 作者:海码007 📜 专栏:C++专栏 💥 标题:【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构 ❣️ 寄语:书到用时方恨少,事非经过不知难。 🎈 最后: 文章作者技术和水平有限,如果文中出现错误,希望大家能指正! 最近项目涉及到网络HTTP相关内容,需要处

    2024年02月03日
    浏览(43)
  • NIFI使用InvokeHTTP发送http请求

    这里介绍四种平时常用的http请求方法:GET、POST、PUT、DELETE。 在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的: An HTTP client processor which can interact with a configurable HTTP Endpoint. The destination URL and HTTP Method are configurable. FlowFile attributes are converted to HTTP headers and the FlowFile

    2024年02月09日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包