您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)python怎樣通過get方式,post方式發(fā)送http請求和接收http響應(yīng),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1.GET方法
get方法是直接將要請求的數(shù)據(jù)放在url中,下面用httplib和urllib2模擬用戶登錄。
1)
#URL地址
url_Addr = "https://apac-axlprod01-api.com:8081/userLogin?"
#用戶登陸需要傳遞的參數(shù)
params = urllib.urlencode({'name': user_name, 'password': user_pwd, 'appId': app_Id})
#我安裝的python證書好像有問題,失能校驗(yàn)
ssl._create_default_https_context = ssl._create_unverified_context
#將參數(shù)和URL組成一個(gè)URL
req = urllib2.Request(url_Addr+params)
res = urllib2.urlopen(req)
data = res.read()
res.close()
2)
#URL地址
url_Addr = "apac-axlprod01-api.com:8081"
#用戶登陸需要傳遞的參數(shù)
params = urllib.urlencode({'name': user_name, 'password': user_pwd, 'appId': app_Id})
ssl._create_default_https_context = ssl._create_unverified_context
conn = httplib.HTTPSConnection(url_Addr)
#將參數(shù)和URL組成一個(gè)URL
conn.request("GET", "/userLogin?" + params)
response = conn.getresponse()
data = response.read()
response.close()
2.POST方法
POST方法是直接將要請求的數(shù)據(jù)放在data或body中,不能放在url中,下面用httplib和urllib2模擬用戶登錄。
1)
#URL地址
url_Addr = "https://apac-axlprod01-api.com:8081/userLogin"
#用戶登陸需要傳遞的參數(shù)
params = urllib.urlencode({'name': user_name, 'password': user_pwd, 'appId': app_Id})
ssl._create_default_https_context = ssl._create_unverified_context
#傳入U(xiǎn)RL和Data
req = urllib2.Request(url = url_Addr,data = params)
res = urllib2.urlopen(req)
data = res.read()
res.close()
2)
#URL地址
url_Addr = "apac-axlprod01-api.com"
#headers
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
#用戶登陸需要傳遞的參數(shù)
params = urllib.urlencode({'name': user_name, 'password': user_pwd, 'appId': app_Id})
ssl._create_default_https_context = ssl._create_unverified_context
conn = httplib.HTTPSConnection(url_Addr,8081)
#傳入U(xiǎn)RL、body和headers
conn.request("POST","/userLogin",params,headers)
response = conn.getresponse()
data = response.read()
response.close()
httplib實(shí)現(xiàn)了http和https的客戶端協(xié)議,但是在python中,模塊urllib和urllib2對httplib進(jìn)行了更上層的封裝
下面詳細(xì)介紹httplib提供的常用類型和方法。
httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )
HTTPConnection類的構(gòu)造函數(shù),表示一次與服務(wù)器之間的交互,即請求/響應(yīng)。參數(shù)host表示服務(wù)器主機(jī), 如:www.csdn.net;port為端口號,默認(rèn)值為80; 參數(shù)strict的 默認(rèn)值為false, 表示在無法解析服務(wù)器返回的狀態(tài)行時(shí)( status line) (比較典型的狀態(tài)行如: HTTP/1.0 200 OK ),是否拋BadStatusLine 異常;可選參數(shù)timeout 表示超時(shí)時(shí)間。
HTTPConnection提供的方法:
HTTPConnection.request ( method , url [ , body [ , headers ]] )
調(diào)用request 方法會(huì)向服務(wù)器發(fā)送一次請求,method 表示請求的方法,常用有方法有g(shù)et 和post和head ;url 表示請求的資源的url ;body 表示提交到服務(wù)器的數(shù)據(jù),必須是字符串(如果method 是"post" ,則可以把body 理解為html 表單中的數(shù)據(jù));headers 表示請求的http 頭。
HTTPConnection.getresponse ()
獲取Http 響應(yīng)。返回的對象是HTTPResponse 的實(shí)例,關(guān)于HTTPResponse 在下面 會(huì)講解。
HTTPConnection.connect ()
連接到Http 服務(wù)器。
HTTPConnection.close ()
關(guān)閉與服務(wù)器的連接。
HTTPConnection.set_debuglevel ( level )
設(shè)置高度的級別。參數(shù)level 的默認(rèn)值為0 ,表示不輸出任何調(diào)試信息。
httplib.HTTPResponse
HTTPResponse表示服務(wù)器對客戶端請求的響應(yīng)。往往通過調(diào)用HTTPConnection.getresponse()來創(chuàng)建,它有如下方法和屬性:
HTTPResponse.read([amt])
獲取響應(yīng)的消息體。如果請求的是一個(gè)普通的網(wǎng)頁,那么該方法返回的是頁面的html??蛇x參數(shù)amt表示從響應(yīng)流中讀取指定字節(jié)的數(shù)據(jù)。
HTTPResponse.getheader(name[, default])
獲取響應(yīng)頭。Name表示頭域(header field)名,可選參數(shù)default在頭域名不存在的情況下作為默認(rèn)值返回。
HTTPResponse.getheaders()
以列表的形式返回所有的頭信息。
HTTPResponse.msg
獲取所有的響應(yīng)頭信息。
HTTPResponse.version
獲取服務(wù)器所使用的http協(xié)議版本。11表示http/1.1;10表示http/1.0。
HTTPResponse.status
獲取響應(yīng)的狀態(tài)碼。如:200表示請求成功。
HTTPResponse.reason
返回服務(wù)器處理請求的結(jié)果說明。一般為”O(jiān)K”
上述就是小編為大家分享的python怎樣通過get方式,post方式發(fā)送http請求和接收http響應(yīng)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。