怎么调试网络请求
作者QQ:415074476
QQ群:191280586
常规方式 不过是使用NSLog打印出链接 和 返回内容.
这样有两个弊端。 一是只看到了数据,没有看到中间环节, 并且数据可能是来自于缓存, 而不是真的来自于服务器。
二是每次都要加断点,运行程序。有点麻烦。结果还不好保存下来。
其实我们可以借助其它工具来观察更多我们想要的信息.
甚至在写实际代码之前就可以模式网络请求。
这个先介绍模拟网络请求。
简单的GET请求, 我们可以简单地使用 wget 就可以。
不建议使用浏览器.因为一是,可能会有跳转, 二是有js执行会改变页面代码.
不过对于我们目前的应用来说倒是没有这个问题..因为是xml格式的数据,
相反, 使用浏览器, 还可以检查xml语法问题.
涉及到 POST请求, 我们就得用专门的命令行工具。curl了。
当然, 你不闲累的话, 也可以自己用telnet.
最简单的命令 curl http://mjweather.sinaapp.com/moji.html
在终端直接显示页面http://mjweather.sinaapp.com/moji.html的内容.
如果想看到更详细的数据加上-v参数.
curl –v http://mjweather.sinaapp.com/moji.html
http://go2live.cn/wp-content/uploads/2012/12/n-2.png
看到没. 不光是内容体.连header信息也打印出来了.
Header信息是个相当有用的内容.
以上是使用 GET请求, 是相当容易的.
复杂点的Post请求.
看以下示例
curl -d 'name=maynard&password=pwd' 'http://learn.com/login.php'
使用-d就可以带上表单数据了.
以上链接就是常用的模拟登陆了.当然后续应该是拿到cookie之后,
再发请求时把cookie带上. 有兴趣的同学可以自己去研究下. 当然最好是先研究下http协议.
再进一步的例子是上传图片了.
我之前测试上传图片的速度时, 就是使用的curl命令.
curl -F 'pic=@test.jpeg' 'http://learn.com/upload.php'
以上命令是把当前目录的test.jpeg作为表单域中pic字段的内容上传到upload.php.
其它的还是http版本.
如
curl -0 'http://learn.com/index.html'//指定为1.0
curl -1 'http://learn.com/index.html'//指定为1.1
更多的功能请man curl自己研究.
下面说监控网络这块.
第一个要就介绍的工具是用来抓请求的。
tcpdump,
这个命令只有root用户才可以使用。
先用whereis tcpdump找出命令路径
http://go2live.cn/wp-content/uploads/2012/12/n-3.png http://go2live.cn/wp-content/uploads/2012/12/n-4.png
失败了。。因为mac上不支持any这个常量。
好吧。说明一下。-i是指定端口的意思。
我们先看看哪个端口可用.
http://go2live.cn/wp-content/uploads/2012/12/n-5.png
在我的机器active的是en1
so命令改下。sudo /usr/sbin/tcpdump -Xnlps0 -ien1 host mjweather.sinaapp.com
http://go2live.cn/wp-content/uploads/2012/12/n-6.png
开始监听了..
试试吧..不管是用curl, wget, telnet还是浏览器.
打开http://mjweather.sinaapp.com/moji.html吧.
我这里用的是curl
curl http://mjweather.sinaapp.com/moji.html
command+t 新建一个终端tab.
输入curl weibo.com 再control+command+[ 回到前一个tab看看结果吧.
http://go2live.cn/wp-content/uploads/2012/12/n-7.png
呃,内容太多了,好晕.
还好, 有软件帮我们做了tcpdump做的事. 使用 起来更方便. wireshark, 相当出名的一个工具。
http://go2live.cn/wp-content/uploads/2012/12/n-8.png
上文已说过,我的机器使用的端口是en1.
这里使用wireshark监听网络数据看看.
http://go2live.cn/wp-content/uploads/2012/12/n-9.png
数据一直刷, 真是烦死人..
那么过滤一下吧.
http://go2live.cn/wp-content/uploads/2012/12/n-10.png
选中Capture Filters
在接下来的界面中选中 http tcp port (80)
http://go2live.cn/wp-content/uploads/2012/12/n-11.png
依然很多啊..还是用host来过滤吧.
http://go2live.cn/wp-content/uploads/2012/12/n-12.png
这下干净了.无关的数据都没有了..
但是怎么看数据呢?
选中HTTP/1.1 200 ok这条.右键选中Follow TCP Stream.
http://go2live.cn/wp-content/uploads/2012/12/n-13.png
然后, 你就得到了看得懂的数据了.
http://go2live.cn/wp-content/uploads/2012/12/n-14.png
工具都是死东西.
原理不过是所有数据都是通过网关通信.
然后把对应的数据按协议解析.
So, 认清协议才是玩网络通信的关键. .
QQ群:191280586
常规方式 不过是使用NSLog打印出链接 和 返回内容.
这样有两个弊端。 一是只看到了数据,没有看到中间环节, 并且数据可能是来自于缓存, 而不是真的来自于服务器。
二是每次都要加断点,运行程序。有点麻烦。结果还不好保存下来。
其实我们可以借助其它工具来观察更多我们想要的信息.
甚至在写实际代码之前就可以模式网络请求。
这个先介绍模拟网络请求。
简单的GET请求, 我们可以简单地使用 wget 就可以。
不建议使用浏览器.因为一是,可能会有跳转, 二是有js执行会改变页面代码.
不过对于我们目前的应用来说倒是没有这个问题..因为是xml格式的数据,
相反, 使用浏览器, 还可以检查xml语法问题.
涉及到 POST请求, 我们就得用专门的命令行工具。curl了。
当然, 你不闲累的话, 也可以自己用telnet.
最简单的命令 curl http://mjweather.sinaapp.com/moji.html
在终端直接显示页面http://mjweather.sinaapp.com/moji.html的内容.
![]() |
如果想看到更详细的数据加上-v参数.
curl –v http://mjweather.sinaapp.com/moji.html
http://go2live.cn/wp-content/uploads/2012/12/n-2.png
看到没. 不光是内容体.连header信息也打印出来了.
Header信息是个相当有用的内容.
以上是使用 GET请求, 是相当容易的.
复杂点的Post请求.
看以下示例
curl -d 'name=maynard&password=pwd' 'http://learn.com/login.php'
使用-d就可以带上表单数据了.
以上链接就是常用的模拟登陆了.当然后续应该是拿到cookie之后,
再发请求时把cookie带上. 有兴趣的同学可以自己去研究下. 当然最好是先研究下http协议.
再进一步的例子是上传图片了.
我之前测试上传图片的速度时, 就是使用的curl命令.
curl -F 'pic=@test.jpeg' 'http://learn.com/upload.php'
以上命令是把当前目录的test.jpeg作为表单域中pic字段的内容上传到upload.php.
其它的还是http版本.
如
curl -0 'http://learn.com/index.html'//指定为1.0
curl -1 'http://learn.com/index.html'//指定为1.1
更多的功能请man curl自己研究.
下面说监控网络这块.
第一个要就介绍的工具是用来抓请求的。
tcpdump,
这个命令只有root用户才可以使用。
先用whereis tcpdump找出命令路径
http://go2live.cn/wp-content/uploads/2012/12/n-3.png http://go2live.cn/wp-content/uploads/2012/12/n-4.png
失败了。。因为mac上不支持any这个常量。
好吧。说明一下。-i是指定端口的意思。
我们先看看哪个端口可用.
http://go2live.cn/wp-content/uploads/2012/12/n-5.png
在我的机器active的是en1
so命令改下。sudo /usr/sbin/tcpdump -Xnlps0 -ien1 host mjweather.sinaapp.com
http://go2live.cn/wp-content/uploads/2012/12/n-6.png
开始监听了..
试试吧..不管是用curl, wget, telnet还是浏览器.
打开http://mjweather.sinaapp.com/moji.html吧.
我这里用的是curl
curl http://mjweather.sinaapp.com/moji.html
command+t 新建一个终端tab.
输入curl weibo.com 再control+command+[ 回到前一个tab看看结果吧.
http://go2live.cn/wp-content/uploads/2012/12/n-7.png
呃,内容太多了,好晕.
还好, 有软件帮我们做了tcpdump做的事. 使用 起来更方便. wireshark, 相当出名的一个工具。
http://go2live.cn/wp-content/uploads/2012/12/n-8.png
上文已说过,我的机器使用的端口是en1.
这里使用wireshark监听网络数据看看.
http://go2live.cn/wp-content/uploads/2012/12/n-9.png
数据一直刷, 真是烦死人..
那么过滤一下吧.
http://go2live.cn/wp-content/uploads/2012/12/n-10.png
选中Capture Filters
在接下来的界面中选中 http tcp port (80)
http://go2live.cn/wp-content/uploads/2012/12/n-11.png
依然很多啊..还是用host来过滤吧.
http://go2live.cn/wp-content/uploads/2012/12/n-12.png
这下干净了.无关的数据都没有了..
但是怎么看数据呢?
选中HTTP/1.1 200 ok这条.右键选中Follow TCP Stream.
http://go2live.cn/wp-content/uploads/2012/12/n-13.png
然后, 你就得到了看得懂的数据了.
http://go2live.cn/wp-content/uploads/2012/12/n-14.png
工具都是死东西.
原理不过是所有数据都是通过网关通信.
然后把对应的数据按协议解析.
So, 认清协议才是玩网络通信的关键. .
还没人赞这篇日记