赞
踩
在开发客户端的时候,需要对请求的正确性以及返回数据格式进行验证,每次调试都去发送请求过于麻烦。于是,我找到了一个方便偷懒的工具——curl。curl是一个向服务器传输数据的工具,支持http、https、ftp、ftps、scp、sftp、tftp、telnet等协议。以下总结了一些针对http的常用方法:
报错1:
curl --insecure https://subdomain.example.com/
报错2:
使用curl命令执行get请求,带多个参数
返回结果提示缺少参数wrapperId,但是上述url中的确有wrapperId。
看最后两行的结果,发现是url被&号截开,在shell中被当做两条命令来执行的。
1 curl localhost:8080/user/binding/query?userId=123456&wrapperId=123&from=test 2 [1] 8937 3 [2] 8938 4 {"ver":"1.0.0","status":1,"message":"Required String parameter 'wrapperId' is not present","data":null,"ok":false} 5 [1]- Done curl localhost:8080/user/binding/query?userId=123456 6 [2]+ Done wrapperId=123
解决方案
在url外面加上引号:
1 curl "localhost:8080/user/binding/query?userId=123456&wrapperId=123&from=test"
命令使用如下:
一、查看网页源代码
1、直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.baidu.com为例
[html] view plain copy
2、如果要把这个网页保存下来,可以使用-o参数,这就相当于使用wget命令了。
[html] view plain copy
二、发送请求
1、GET请求
默认直接请求一个url就是发出一个get请求,参数的话直接拼接在url里就好了,如
[html] view plain copy
上述请求会上百度发起一条查询请求,参数是wd=curl
2、POST请求
普通post请求:
[html] view plain copy
通过脚本发送post请求,顺便附带文本数据,比如通过"浏览"选择本地的card.txt并上传发送post请求
[html] view plain copy
注意:其中-F 为带文件的形式发送post请求,blob为文本框中的name元素对应的属性值。<type="text" name="blob">
3. POST json请求
curl -H "Content-Type:application/json" -X POST --data '{"key": "mapper.osr.Gerrit.bo.changecomments"}' http://xxx
三、HTTP方法
curl默认的HTTP方法是GET,使用-X参数可以支持其他动词。
[html] view plain copy
四、自动跳转
有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。
[html] view plain copy
键入上面的命令,结果就自动跳转为http://detail.tmall.com/item.htm?id=25823396605
五、显示头信息
-i 参数可以显示http response的头信息,连同网页代码一起。(-I参数则是只显示http response的头信息)
[html] view plain copy
六、显示通信过程
-v参数可以显示一次http通信的整个过程,包括端口连接和http request头信息
[html] view plain copy
如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。
[html] view plain copy
七、Referer字段
有时你需要在http request头信息中,提供一个referer字段,表示你是从哪里跳转过来的:
[html] view plain copy
八、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]
九、cookie 使用
--cookie参数,可以让curl发送cookie。
[html] view plain copy
至于具体的cookie的值,可以从http response头信息的Set-Cookie字段中得到。也可以例如:
[html] view plain copy
十、增加头信息
有时需要在http request之中,自行增加一个头信息。--header参数就可以起到这个作用。
[html] view plain copy
十一、HTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数:
[html] view plain copy
[html] view plain copy
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。