温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

curl命令的使用

发布时间:2020-06-27 10:11:57 来源:网络 阅读:8304 作者:孤雁不独飞 栏目:开发技术

    最近公司和另外一个公司合作,该公司会定期给我们公司传送一批对我们公司有用的产品信息数据,并且要保存到数据库中,以备将来所用,当然这个任务就落在了我的身上。很快就写好了模型(用来保存产品信息的数据模型)以及接口函数,接口函数是以POST方式接收数据,写完接口函数后当然就是测试了,但是之前没测试过以post方式接收数据的api(原谅一个经验不丰富的人的无知。。。),但是还是让我找到了测试方法,不就是远程post方式提交表单嘛,网上很多例子,在此贴上我的代码,其实不难,理解了几个包的方法,这段代码还是很好理解的,如下

#coding=utf-8
import sys, urllib2, urllib,json
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
info = [
  {
    "id": 554888,
    "code": "85317",
    "partno": "xxx",
    "origin": "xxx",
    "product_name": "xxx",
    "type": "2"
  },
  {
  "id": 554113,
    "hs_code": "8230099",
    "partno": "xxx",
    "origin": "xxx",
    "product_name": "xxx",
    "type": "2"
  }
]

page = {"packetdata":info}
page = json.dumps(page)
url = 'http://0.0.0.0:7000/api_recept_json_data/'
data = urllib.urlencode(page)
req = urllib2.Request(url,data,headers)

fd = urllib2.urlopen(req,data)

print fd.read()

然后运行这段代码,发现如果数据格式没错的话接收数据成功,而且数据库中会生成相应的记录,接着就是测试修复bug,增加异常处理机制等等,尽量使它能够处理各种在传送数据过程中出现的异常。然后就去向经理汇报,演示,经理看我演示完后,然后跟我说,这个测试代码有点不专业,叫我去了解一下curl命令。然后就在网上找资料学习,发现它确实是一个功能很强大的命令,个人觉得每个web后端开发人员都应该要掌握它。

     

curl命令可以看作是命令行浏览器,作用是发出网络请求,然后得到和提交数据,显示在标准输出上面,支持多种协议。

(1)查看网页源码

    直接在curl命令后加上网址,就可以看到网页源码。我们以网址http://www.baidu.com为例,

   curl  http://www.baidu.com 

 如果要把这个网页保存下来,可以使用-o参数,curl -o [文件名] URL

如果文件不存在,会自动创建的,如果想同时获取多个文件,可使用命令

curl -o [文件名1]  URL  -o [文件名2] URL

-O参数,使用URL中默认文件名保存到本地

(2) 自动跳转

有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。

比如有些网址,只有登陆了才能访问一些页面内容,此时加上这个参数,会直接跳转到登陆页面,然后获取登陆页面的源码

(3)显示头信息

-i参数可以显示http response的头信息,连同网页代码一起。

-I参数则只显示头信息

(4)显示通信过程

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

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

      curl --trace output.txt  URL

或者

      curl --trace-ascii output.txt  URL

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

(5)发送表单信息

发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。

      curl tvbs.cc/form.cgi?data=xxx

POST方法必须把数据和网址分开,curl就要用到--data参数。

      比如上面例子可用如下形式命令

 curl --data "packetage=[{"id": 554888,"code": "85317","partno": "xxx","origin": "xxx","product_name": "xxx","type": "2"},{"id": 554113,"hs_code": "8230099","partno": "xxx","origin": "xxx","product_name": "xxx","type": "2"}]"   http://0.0.0.0:7000/api_recept_json_data/

如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode。

如果该接口需要授权才能访问,就需要-u选项提供用户名和密码进行授权      

curl -u username:password URL


(6)文件上传

可以用curl这样上传文件:

      curl --form upload=@localfilename --form press=OK [URL]

(7)Referer字段

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

      curl --referer URL

(8)User Agent字段

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

比如下面的User Agent是

'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

curl可以这样模拟:

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

(9)cookie

使用--cookie参数,可以让curl发送cookie。

      curl --cookie "name=xxx"  URL

至于具体的cookie的值,可以从http response头信息的Set-Cookie字段中得到。

(10)增加头信息

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

      curl --header "xxx: xxxxxx" URL

(11)HTTP认证

有些网域需要HTTP认证,这时curl需要用到--user/-u参数,前面提到过。

      curl --use/-ur name:password  URL






向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI