溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

curl命令的使用

發布時間:2020-06-27 10:11:57 來源:網絡 閱讀:8342 作者:孤雁不獨飛 欄目:開發技術

    最近公司和另外一個公司合作,該公司會定期給我們公司傳送一批對我們公司有用的產品信息數據,并且要保存到數據庫中,以備將來所用,當然這個任務就落在了我的身上。很快就寫好了模型(用來保存產品信息的數據模型)以及接口函數,接口函數是以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

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女