curl命令的使用-創(chuàng)新互聯(lián)

最近公司和另外一個(gè)公司合作,該公司會(huì)定期給我們公司傳送一批對(duì)我們公司有用的產(chǎn)品信息數(shù)據(jù),并且要保存到數(shù)據(jù)庫(kù)中,以備將來(lái)所用,當(dāng)然這個(gè)任務(wù)就落在了我的身上。很快就寫好了模型(用來(lái)保存產(chǎn)品信息的數(shù)據(jù)模型)以及接口函數(shù),接口函數(shù)是以POST方式接收數(shù)據(jù),寫完接口函數(shù)后當(dāng)然就是測(cè)試了,但是之前沒(méi)測(cè)試過(guò)以post方式接收數(shù)據(jù)的api(原諒一個(gè)經(jīng)驗(yàn)不豐富的人的無(wú)知。。。),但是還是讓我找到了測(cè)試方法,不就是遠(yuǎn)程post方式提交表單嘛,網(wǎng)上很多例子,在此貼上我的代碼,其實(shí)不難,理解了幾個(gè)包的方法,這段代碼還是很好理解的,如下

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),市中企業(yè)網(wǎng)站建設(shè),市中品牌網(wǎng)站建設(shè),網(wǎng)站定制,市中網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,市中網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
#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()

然后運(yùn)行這段代碼,發(fā)現(xiàn)如果數(shù)據(jù)格式?jīng)]錯(cuò)的話接收數(shù)據(jù)成功,而且數(shù)據(jù)庫(kù)中會(huì)生成相應(yīng)的記錄,接著就是測(cè)試修復(fù)bug,增加異常處理機(jī)制等等,盡量使它能夠處理各種在傳送數(shù)據(jù)過(guò)程中出現(xiàn)的異常。然后就去向經(jīng)理匯報(bào),演示,經(jīng)理看我演示完后,然后跟我說(shuō),這個(gè)測(cè)試代碼有點(diǎn)不專業(yè),叫我去了解一下curl命令。然后就在網(wǎng)上找資料學(xué)習(xí),發(fā)現(xiàn)它確實(shí)是一個(gè)功能很強(qiáng)大的命令,個(gè)人覺得每個(gè)web后端開發(fā)人員都應(yīng)該要掌握它。

    

curl命令可以看作是命令行瀏覽器,作用是發(fā)出網(wǎng)絡(luò)請(qǐng)求,然后得到和提交數(shù)據(jù),顯示在標(biāo)準(zhǔn)輸出上面,支持多種協(xié)議。

(1)查看網(wǎng)頁(yè)源碼

   直接在curl命令后加上網(wǎng)址,就可以看到網(wǎng)頁(yè)源碼。我們以網(wǎng)址http://www.baidu.com為例,

  curl  http://www.baidu.com 

如果要把這個(gè)網(wǎng)頁(yè)保存下來(lái),可以使用-o參數(shù),curl -o [文件名] URL

如果文件不存在,會(huì)自動(dòng)創(chuàng)建的,如果想同時(shí)獲取多個(gè)文件,可使用命令

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

-O參數(shù),使用URL中默認(rèn)文件名保存到本地

(2) 自動(dòng)跳轉(zhuǎn)

有的網(wǎng)址是自動(dòng)跳轉(zhuǎn)的。使用-L參數(shù),curl就會(huì)跳轉(zhuǎn)到新的網(wǎng)址。

比如有些網(wǎng)址,只有登陸了才能訪問(wèn)一些頁(yè)面內(nèi)容,此時(shí)加上這個(gè)參數(shù),會(huì)直接跳轉(zhuǎn)到登陸頁(yè)面,然后獲取登陸頁(yè)面的源碼

(3)顯示頭信息

-i參數(shù)可以顯示http response的頭信息,連同網(wǎng)頁(yè)代碼一起。

-I參數(shù)則只顯示頭信息

(4)顯示通信過(guò)程

-v參數(shù)可以顯示一次http通信的整個(gè)過(guò)程,包括端口連接和http request頭信息。

如果你覺得上面的信息還不夠,那么下面的命令可以查看更詳細(xì)的通信過(guò)程。

      curl --trace output.txt  URL

或者

      curl --trace-ascii output.txt  URL

運(yùn)行后,請(qǐng)打開output.txt文件查看。

(5)發(fā)送表單信息

發(fā)送表單信息有GET和POST兩種方法。GET方法相對(duì)簡(jiǎn)單,只要把數(shù)據(jù)附在網(wǎng)址后面就行。

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

POST方法必須把數(shù)據(jù)和網(wǎng)址分開,curl就要用到--data參數(shù)。

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

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/

如果你的數(shù)據(jù)沒(méi)有經(jīng)過(guò)表單編碼,還可以讓curl為你編碼,參數(shù)是--data-urlencode。

如果該接口需要授權(quán)才能訪問(wèn),就需要-u選項(xiàng)提供用戶名和密碼進(jìn)行授權(quán)      

curl -u username:password URL

(6)文件上傳

可以用curl這樣上傳文件:

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

(7)Referer字段

有時(shí)你需要在http request頭信息中,提供一個(gè)referer字段,表示你是從哪里跳轉(zhuǎn)過(guò)來(lái)的。

      curl --referer URL

(8)User Agent字段

這個(gè)字段是用來(lái)表示客戶端的設(shè)備信息。服務(wù)器有時(shí)會(huì)根據(jù)這個(gè)字段,針對(duì)不同設(shè)備,返回不同格式的網(wǎng)頁(yè),比如手機(jī)版和桌面版。

比如下面的User Agent是

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

curl可以這樣模擬:

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

(9)cookie

使用--cookie參數(shù),可以讓curl發(fā)送cookie。

      curl --cookie "name=xxx"  URL

至于具體的cookie的值,可以從http response頭信息的Set-Cookie字段中得到。

(10)增加頭信息

有時(shí)需要在http request之中,自行增加一個(gè)頭信息。--header參數(shù)就可以起到這個(gè)作用。

      curl --header "xxx: xxxxxx" URL

(11)HTTP認(rèn)證

有些網(wǎng)域需要HTTP認(rèn)證,這時(shí)curl需要用到--user/-u參數(shù),前面提到過(guò)。

      curl --use/-ur name:password  URL

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

新聞名稱:curl命令的使用-創(chuàng)新互聯(lián)
鏈接地址:http://muchs.cn/article24/dcgpje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站排名、網(wǎng)站營(yíng)銷、網(wǎng)站改版微信小程序、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司