项目开发时候,调用了外部的接口,之前接口ip是http://xx.xx.xxx.xxx:8095,后来ip升级成域改成http://abc.def/xxxx ,如何确定我们的服务器和这个域是否是联通的呢?因为调接口一直提示连接超时…
通过下面的curl -v xxx 命令,虽然是404,但是网络是通的。原因跟网络环境没关系,是由于自身服务调用的接口地址还是ip,没有刷新成域的方式。后来重启了自己项目的配置中心就解决了。
总结一下curl常用用法
-v显示请求详细信息
curl www.baidu.com -v
1
-X 指定请求方式
GET请求
curl -X GET http://localhost:8080/search?data=123 # -X GET是可选的
1
POST请求
curl -X POST -d"data=123&key=456" http://localhost:8080/search -v
1
由于-d选项为使用POST方式向server发送数据,因此在使用-d的时候,可以省略-X POST。使用-d时,将使用Content-type:application/x-www-form-urlencoded方式发送数据。
如果想使用JSON形式post数据,可以使用-H指定头部类型
curl -H "Content-Type:application/json" -d '{"data":"123","key":"456"}' http://localhost:8080/search -v
1
如果想在请求的时候带上Cookie,可以这样
curl -H "Cookie:username=XXX" {URL}
1
-H增加头部信息
例子见以JSON方法POST数据
Cookie相关
-c 存储cookie到文件
curl -d"name=zhangsan&password=123" http://localhost:8080/login -c ./cookie
1
使用用户名和密码登录系统,并将cookie信息存储在当前目录的cookie文件中
-b 携带cookie文件
curl http://localhost:8080/login -b ./cookie
1
‘-cookie’直接指定cookie
curl --cookie "name=zhangsan" http://localhost:8080/login
1
-F表单提交操作
curl可以通过-F命令来以Content-Type:multipart/form-data的形式向server post数据,该命令允许提交二进制文件等。可以使用@前缀来制定提交的内容为一个文件,也可以使用<符号来提交文件中的内容
curl -F prefile=@portrait.jpg https://example.com/upload.cgi
1
向服务器上传一个图片,图片的表单域名为profile,内容为protrait.jpg的二进制