這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)python怎樣通過(guò)get方式,post方式發(fā)送http請(qǐng)求和接收http響應(yīng),文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)本溪,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
1.GET方法
get方法是直接將要請(qǐng)求的數(shù)據(jù)放在url中,下面用httplib和urllib2模擬用戶(hù)登錄。
1)
#URL地址
url_Addr = "https://apac-axlprod01-api.com:8081/userLogin?"
#用戶(hù)登陸需要傳遞的參數(shù)
params = urllib.urlencode({'name': user_name, 'password': user_pwd, 'appId': app_Id})
#我安裝的python證書(shū)好像有問(wèn)題,失能校驗(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"
#用戶(hù)登陸需要傳遞的參數(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方法是直接將要請(qǐng)求的數(shù)據(jù)放在data或body中,不能放在url中,下面用httplib和urllib2模擬用戶(hù)登錄。
1)
#URL地址
url_Addr = "https://apac-axlprod01-api.com:8081/userLogin"
#用戶(hù)登陸需要傳遞的參數(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"}
#用戶(hù)登陸需要傳遞的參數(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的客戶(hù)端協(xié)議,但是在python中,模塊urllib和urllib2對(duì)httplib進(jìn)行了更上層的封裝
下面詳細(xì)介紹httplib提供的常用類(lèi)型和方法。
httplib.HTTPConnection ( host [ , port [ , strict [ , timeout ]]] )
HTTPConnection類(lèi)的構(gòu)造函數(shù),表示一次與服務(wù)器之間的交互,即請(qǐng)求/響應(yīng)。參數(shù)host表示服務(wù)器主機(jī), 如:www.csdn.net;port為端口號(hào),默認(rèn)值為80; 參數(shù)strict的 默認(rèn)值為false, 表示在無(wú)法解析服務(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ā)送一次請(qǐng)求,method 表示請(qǐng)求的方法,常用有方法有g(shù)et 和post和head ;url 表示請(qǐng)求的資源的url ;body 表示提交到服務(wù)器的數(shù)據(jù),必須是字符串(如果method 是"post" ,則可以把body 理解為html 表單中的數(shù)據(jù));headers 表示請(qǐng)求的http 頭。
HTTPConnection.getresponse ()
獲取Http 響應(yīng)。返回的對(duì)象是HTTPResponse 的實(shí)例,關(guān)于HTTPResponse 在下面 會(huì)講解。
HTTPConnection.connect ()
連接到Http 服務(wù)器。
HTTPConnection.close ()
關(guān)閉與服務(wù)器的連接。
HTTPConnection.set_debuglevel ( level )
設(shè)置高度的級(jí)別。參數(shù)level 的默認(rèn)值為0 ,表示不輸出任何調(diào)試信息。
httplib.HTTPResponse
HTTPResponse表示服務(wù)器對(duì)客戶(hù)端請(qǐng)求的響應(yīng)。往往通過(guò)調(diào)用HTTPConnection.getresponse()來(lái)創(chuàng)建,它有如下方法和屬性:
HTTPResponse.read([amt])
獲取響應(yīng)的消息體。如果請(qǐng)求的是一個(gè)普通的網(wǎng)頁(yè),那么該方法返回的是頁(yè)面的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表示請(qǐng)求成功。
HTTPResponse.reason
返回服務(wù)器處理請(qǐng)求的結(jié)果說(shuō)明。一般為”O(jiān)K”
上述就是小編為大家分享的python怎樣通過(guò)get方式,post方式發(fā)送http請(qǐng)求和接收http響應(yīng)了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。