我们在客户端开发过程中总免不了和后端进行api对接,有时候需要对返回的数据格式进行调试,有时候每次运行客户端来发送请求,这个未免效率太低,这里就来介绍一个好用的工具--curl。

curl

curl是一个向服务器传输数据的工具,它支持http、https、ftp、ftps、scp、sftp、tftp、telnet等协议,这里只针对http进行讲解一些常用的用法,具体安装请自行搜索。

打开百度

curl http://www.baidu.com

接着你就会看到百度的页面源代码输出。

如果要把这个网页保存下来,可以这样:

curl http://www.baidu.com > /tmp/baidu.html

你会看到一条进度条,然后源码就被重定向到了/tmp/baidu.html。

或者:

curl -o /tmp/baidu.html http://www.baidu.com

GET请求

默认直接请求一个url就是发出一个get请求,参数的话直接拼接在url里就好了,如

curl http://www.baidu.com/s?wd=curl

上述请求会上百度发起一条查询请求,参数是wd=url

POST请求

curl -d "name=test&page=1" http://www.baidu.com

**-d** 参数指定表单以POST的形式执行。

只展示Header

curl -I http://www.baidu.com

可以看到只返回一些header信息

HTTP/1.1 200 OK

Date: Fri, 07 Nov 2014 09:48:58 GMT

Content-Type: text/html; charset=utf-8

Connection: Keep-Alive

Vary: Accept-Encoding

Set-Cookie: BAIDUID=E9DB2F0AC95CB6BFDAD9D5CFDCED0A12:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

Set-Cookie: BAIDUPSID=E9DB2F0AC95CB6BFDAD9D5CFDCED0A12; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

Set-Cookie: BDSVRTM=0; path=/

Set-Cookie: BD_HOME=0; path=/

Set-Cookie: H_PS_PSSID=9725_9165_1465_7800_9452_9498_6504_9509_6018_9700_9757_9531_9478_7798_9453_9793_9024; path=/; domain=.baidu.com

P3P: CP=" OTI DSP COR IVA OUR IND COM "

Cache-Control: private

Cxy_all: baidu+3057b288b211c770a1463cc8519b62a8

Expires: Fri, 07 Nov 2014 09:48:17 GMT

X-Powered-By: HPHP

Server: BWS/1.1

BDPAGETYPE: 1

BDQID: 0xfa28eff900012706

BDUSERID: 0

显示通信过程

-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息

curl -v www.baidu.com

* Adding handle: conn: 0x7ffe4b003a00

* Adding handle: send: 0

* Adding handle: recv: 0

* Curl_addHandleToPipeline: length: 1

* - Conn 0 (0x7ffe4b003a00) send_pipe: 1, recv_pipe: 0

* About to connect() to www.baidu.com port 80 (#0)

* Trying 61.135.169.125...

* Connected to www.baidu.com (61.135.169.125) port 80 (#0)

> GET / HTTP/1.1

> User-Agent: curl/7.30.0

> Host: www.baidu.com

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Fri, 07 Nov 2014 09:49:49 GMT

< Content-Type: text/html; charset=utf-8

< Transfer-Encoding: chunked

< Connection: Keep-Alive

< Vary: Accept-Encoding

< Set-Cookie: BAIDUID=062E02D23FBB651CF8455B699DF02B64:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

< Set-Cookie: BAIDUPSID=062E02D23FBB651CF8455B699DF02B64; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

< Set-Cookie: BDSVRTM=0; path=/

< Set-Cookie: BD_HOME=0; path=/

< Set-Cookie: H_PS_PSSID=7744_1429_7801_9583_9499_6506_6018_9769_9699_9757_9532_9477_7799_9453_9716_9023; path=/; domain=.baidu.com

< P3P: CP=" OTI DSP COR IVA OUR IND COM "

< Cache-Control: private

< Cxy_all: baidu+7dcb6b3c03d32c334d42f311919a14d6

< Expires: Fri, 07 Nov 2014 09:49:20 GMT

< X-Powered-By: HPHP

* Server BWS/1.1 is not blacklisted

< Server: BWS/1.1

< BDPAGETYPE: 1

< BDQID: 0xadb706860000088f

< BDUSERID: 0

如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

curl --trace output.txt www.baidu.com

或者

curl --trace-ascii output.txt www.baidu.com

运行后,请打开output.txt文件查看。

HTTP方法

curl默认的HTTP方法是GET,使用-X参数可以支持其他动词。

curl -X POST www.example.com

curl -X DELETE www.example.com

Referer字段

有时你需要在http request头信息中,提供一个referer字段,表示你是从哪里跳转过来的。

curl --referer http://www.example.com http://www.example.com

## User Agent字段

这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。

iPhone4的User Agent是

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

curl可以这样模拟:

curl --user-agent "[User Agent]" [URL]

增加头信息

有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。

curl --header "Content-Type:application/json" http://example.com

点击“阅读原文”可以阅读原博客

使用curl来调试你的应用相关推荐

  1. 转:使用curl来调试你的应用

    我们在客户端开发过程中总免不了和后端进行api对接,有时候需要对返回的数据格式进行调试,有时候每次运行客户端来发送请求,这个未免效率太低,这里就来介绍一个好用的工具–curl. curl curl是一 ...

  2. 使用curl工具调试https接口

    工作中需要对接调试http接口,之前都是写代码测试,发现直接用curl这个工具更简单高效. 举例如下: 想要post一包数据给这个接口https://XXXXXXXXX http报文头规定如下: PO ...

  3. (转)利用libcurl和国内著名的两个物联网云端通讯的例程, ubuntu和openwrt下调试成功(四)...

    1. libcurl 的参考文档如下 CURLOPT_HEADERFUNCTION Pass a pointer to a function that matches the following pr ...

  4. linux malloc命令,减少 curl 中内存分配操作(malloc)

    今天我在 libcurl 内部又做了一个小改动,使其做更少的 malloc.这一次,泛型链表函数被转换成更少的 malloc (这才是链表函数应有的方式,真的). 研究 malloc 几周前我开始研究 ...

  5. 用php批处理图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  6. php curl post上传图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  7. php 中使用cURL发送get/post请求,上传图片,批处理

    https://mp.weixin.qq.com/s/8luqMEd8xt8oJxFLLCU1XA 文章正文 cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络 ...

  8. php CI框架输出空行问题排查

    今天在使用 curl 命令行工具调试一个功能时,发现输出的内容总是会在最开始莫名其妙的多一行空行: 项目框架是 php 的 CodeIgniter,感觉这种问题在网上不好查找,因为可以确定这个是业务出 ...

  9. 原来你是这样的http2......

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由mariolu发表于云+社区专栏 序言 目前HTTP/2.0(简称h2)已经在广泛使用(截止2018年8月根据Alexa流行度排名的头 ...

  10. OBS鉴权实现的宝典秘籍,速拿!

    摘要:OBS提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用.本文将带你了解OBS API鉴权实现的宝典秘籍. OBS ...

最新文章

  1. 深度学习中的优化算法之BGD
  2. .NET连接ORACLE数据库的方法
  3. Python 删除文件与文件夹
  4. Intel Realsense D435 深度图为什么会出现残影?(Invalid Depth Band 无效深度带)(黑洞)
  5. 使用nginx分片功能提升缓存效率,支持可拖拽式播放视频
  6. CVPR 2019 | 步步为营!通过迭代式模糊核预测提高超分辨质量
  7. Delphi通过Map文件查找内存地址出错代码所在行
  8. DirectX 9的安装与配置
  9. 明明有QQ,凭什么微信能火?——QQ微信横向对比分析
  10. 谷歌浏览器 Cookie 设置
  11. dismiss和remove_Android对话框之dismiss和cancel和hide区别
  12. python中reduce函数_reduce函数
  13. matlab数据导出wps,怎么把金山WPS表格的数据导入MATLAB/
  14. ListIterator
  15. Report中的Drill down
  16. Ajax--概述、xhr对象的常用属性和方法、xhr的常用事件、xhr对象发送POST请求、xhr对象发送GET请求、xhr对象的兼容性问题、数据交换格式(XML、JSON)
  17. SpringBoot+vue实现前后端分离的简历系统
  18. Docker概述及使用
  19. LED背光源运用于小型收款机
  20. 图书馆学科最核心的专长在那里?

热门文章

  1. Three.js – Building a Cube with different mater...
  2. 将list中的数据组成用逗号分隔的字符串
  3. js赋值时特殊字符完美处理方案
  4. [RHEL5企业级Linux服务攻略]--第8季 Iptables服务全攻略之实战配置
  5. vim 的复制粘贴剪切
  6. 如何从 Mac 上的“照片”中导出照片、视频和幻灯片放映?
  7. MAMP Pro for Mac(PHP/MySQL开发环境工具)
  8. 如何使用Mac的屏幕时间功能限制访问网站?
  9. 登录权限验证token
  10. ecplise tomcat忽然出现404