最近公司和另外一個(gè)公司合作,該公司會(huì)定期給我們公司傳送一批對我們公司有用的產(chǎn)品信息數(shù)據(jù),并且要保存到數(shù)據(jù)庫中,以備將來所用,當(dāng)然這個(gè)任務(wù)就落在了我的身上。很快就寫好了模型(用來保存產(chǎn)品信息的數(shù)據(jù)模型)以及接口函數(shù),接口函數(shù)是以POST方式接收數(shù)據(jù),寫完接口函數(shù)后當(dāng)然就是測試了,但是之前沒測試過以post方式接收數(shù)據(jù)的api(原諒一個(gè)經(jīng)驗(yàn)不豐富的人的無知。。。),但是還是讓我找到了測試方法,不就是遠(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ò)營銷,網(wǎng)絡(luò)優(yōu)化,市中網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(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ù)庫中會(huì)生成相應(yīng)的記錄,接著就是測試修復(fù)bug,增加異常處理機(jī)制等等,盡量使它能夠處理各種在傳送數(shù)據(jù)過程中出現(xiàn)的異常。然后就去向經(jīng)理匯報(bào),演示,經(jīng)理看我演示完后,然后跟我說,這個(gè)測試代碼有點(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ò)請求,然后得到和提交數(shù)據(jù),顯示在標(biāo)準(zhǔn)輸出上面,支持多種協(xié)議。
(1)查看網(wǎng)頁源碼
直接在curl命令后加上網(wǎng)址,就可以看到網(wǎng)頁源碼。我們以網(wǎng)址http://www.baidu.com為例,
curl http://www.baidu.com
如果要把這個(gè)網(wǎng)頁保存下來,可以使用-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)址,只有登陸了才能訪問一些頁面內(nèi)容,此時(shí)加上這個(gè)參數(shù),會(huì)直接跳轉(zhuǎn)到登陸頁面,然后獲取登陸頁面的源碼
(3)顯示頭信息
-i參數(shù)可以顯示http response的頭信息,連同網(wǎng)頁代碼一起。
-I參數(shù)則只顯示頭信息
(4)顯示通信過程
-v參數(shù)可以顯示一次http通信的整個(gè)過程,包括端口連接和http request頭信息。
如果你覺得上面的信息還不夠,那么下面的命令可以查看更詳細(xì)的通信過程。
curl --trace output.txt URL
或者
curl --trace-ascii output.txt URL
運(yùn)行后,請打開output.txt文件查看。
(5)發(fā)送表單信息
發(fā)送表單信息有GET和POST兩種方法。GET方法相對簡單,只要把數(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ù)沒有經(jīng)過表單編碼,還可以讓curl為你編碼,參數(shù)是--data-urlencode。
如果該接口需要授權(quá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)過來的。
curl --referer URL
(8)User Agent字段
這個(gè)字段是用來表示客戶端的設(shè)備信息。服務(wù)器有時(shí)會(huì)根據(jù)這個(gè)字段,針對不同設(shè)備,返回不同格式的網(wǎng)頁,比如手機(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ù),前面提到過。
curl --use/-ur name:password URL
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(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://jinyejixie.com/article24/dcgpje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站排名、網(wǎng)站營銷、網(wǎng)站改版、微信小程序、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容