使用curl来调试你的应用

标签: curl android | 发表时间:2014-11-27 11:55 | 作者:stormzhang
分享到:
出处:http://segmentfault.com/blogs

原文链接: http://stormzhang.com/devtools/2014/11/07/use-curl-debug/

我们在客户端开发过程中总免不了和后端进行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 调试 应用] 推荐:

使用curl来调试你的应用

- - SegmentFault 最新的文章
我们在客户端开发过程中总免不了和后端进行api对接,有时候需要对返回的数据格式进行调试,有时候每次运行客户端来发送请求,这个未免效率太低,这里就来介绍一个好用的工具--curl. curl是一个向服务器传输数据的工具,它支持http、https、ftp、ftps、scp、sftp、tftp、telnet等协议,这里只针对http进行讲解一些常用的用法,具体安装请自行搜索.

curl网站开发指南

- Andy - 阮一峰的网络日志
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面. 它支持多种协议,下面举例讲解如何将它用于网站开发.

PHP,CURL和你的安全!

- - WebHek
如果最近你在美国看电视,你会经常看到一个广告——一个和蔼友善的家伙说“我希望我的电脑被病毒感染”,“我希望所有我家的照片都被人删除,找不回来. ”或“我希望我的笔记本运转的声音听起来像打雷. 当然,没有一个正常人希望遇到这样的痛苦,但如果你不对自己的电脑采取保护措施,结果就是让黑客得逞. 你需要理解,这就像在你家里,车或钱袋子,你不能让它们都敞着口放在外面,你不能认为陌生路人都是可信的.

Eclipse远程调试Web应用

- - ITeye博客
   在windows系统下 .    修改%CATALINE_HOME%/bin/catalina.bat,加入下面这行: .    其中address=8787是没被使用的端口号. 连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试.     在非windows系统中: .

使用 Weinre 调试移动网站及 PhoneGap 应用

- - 博客园_梦想天空
  在 PC 端,我们可以使用 Firebug 或者 Chrome 开发人员工具方便的调试网站或者. 但是,当我们想在移动端调试站点或者应用的时候,这些工具就派不上用场了. 因此,移动开发人员都希望能有 Mobile 版本的 Firebug 或者 Chrome 开发人员工具. Weinre 就是这样一款工具,可以帮助我们调试移动网站及 PhoneGap 应用.

Android4.4支持使用DevTools对原生Android应用程序WebViews内容进行调试

- - CSDN博客移动开发推荐文章
从Android4.4(KitKat)开始,可以使用DevTools对原生Android应用程序的Android WebViews内容进行调试. 调试WebViews要求:. 1.在Android设备或模拟器运行Android4.4或更高版本,并且Android设备上启用USB调试模式. 2.Chrome 30或更高版本.

Log调试

- - ITeye博客
在开发中我们一定不能避免使用Log类,但是这个类存在一个问题就是,当你在程序中使用了大量的Log,那么在程序开发完毕的时候,这将是一个问题,因为,你需要将所有的Log记录注释掉(当然,你不注释也是可以的). 我们可以写一个类,将Log类包装起来,使用一个boolean来控制所有的Log记录的显示. public static final boolean isDebug = true;//这里控制所有Log的显示情况.

Python调试

- - 企业架构 - ITeye博客
原文地址: http://blog.csdn.net/xuyuefei1988/article/details/19399137. 1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:. IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:.

远程调试Tomcat

- - ITeye博客
  这种情况下只能通过查看远程服务器上的log来调试,如果出现unknown source说明编译的时候没有加入行号的信息,按如下修改.   a)通过javac编译时,默认相当于指定-g:source,lines,这样编译出来的class文件中会包含源代码和行号信息.   b)而通过ant编译时,默认相当于指定-g:none,这样编译出来的class文件会比较小,但是不包含任何调试信息,所以出错的时候就会打印出unknown source.

gdb调试工具

- - CSDN博客系统运维推荐文章
查看帮助一是man 命令,二是进入 www.gnu.org,找到gdb的帮助文档(更详细). gcc -Wall -g main.c -o main,只有这样才能产生调试信息,包括core的调试信息.     run(r)  运行,执行到断点,重新用r,表示重新开始执行.     list(l)  列出源代码,l 2,l main,l 2,16(数字表示行数).