python請求post數據
㈠ python requests庫中的post詳解
一、post請求及響應詳解
返回結果:
大家看,其實通過post發送請求很簡單
下面再講講返回信息的具體內容
大家看,其實有很多的返回值參數,其實我們實際中能用到的並不多,我下邊一一列舉出來了
response.json():返回信息的格式是json,應為我們請求的時候是json格式,返回的也是一個json,如果返回報錯,應該是開發的介面出錯了
response.text:如果response.json,可以使用text調試一下,看看具體的返回內容是什麼,這里看到的都是字元串了
response.status_code:返回的http狀態碼,200是成功,404是未找到介面路徑,500是伺服器錯誤,等等
response.url:返回請求時的url地址
response.headers:返回伺服器給你的響應header
response.cookies:返回伺服器給你的cookies,這是一個多麼好的獲取cookie的方法啊,
response.content:同response.text是一樣的
二、post請求中的其他參數
復制
import requests
res = requests.post(url="url",data="body",timeout=30,verfiy=False)
print(res.json())
url:請求的全路徑地址,一定是要完整的路徑哦
data:請求的內容,如果是json的格式,最好使用json.mps,反序列化一下,避免格式錯誤,如果是其他格式,就都是字元串了
timeout:設置超時時間,這樣我們在自動化測試和爬蟲的時候,當達到了設置的超時時間,我們的程序就退出不會一直等待了,可以做其他操作了
verfiy:如果請求的介面是https協議,這個參數就很好用了,如果設置該參數為True,那麼我們的腳本就是要配置CA證書,建議參數值為False,好用又簡單
好了,post的請求詳解就這些了,歡迎大家點贊留言,我會給大家解答疑問的
㈡ python通過get,post方式發送http請求和接收http響應
本文實例講述了python通過get,post方式發送http請求和接收http響應的方法。姿敏分享給輪敏大家供大家參考。
具體如下:
測試用CGI,名字為test.py,放在apache的cgi-bin目錄下:
#!/usr/bin/python
import cgi
def main():
print Content-type: text/htmln
form = cgi.FieldStorage()
if form.has_key(ServiceCode) and form[ServiceCode].value != :
print h1 Hello,form[ServiceCode].value,/h1
else:
print h1 Error! Please enter first name./h1
main()
python發送post和get請求
get請求:
使用get方式時,請求數據直接放在url中。
方法一、
?
7
8
import urllib
import urllib2
url =
req = urllib2.Request(url)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
?
7
import httplib
url =
conn = httplib.HTTPConnection(192.168.81.16)
conn.request(method=GET,url=url)
response = conn.getresponse()
res= response.read()
print res
post請求:臘冊枝
使用post方式時,數據放在data或者body中,不能放在url中,放在url中將被忽略。
方法一、
import urllib
import urllib2
test_data = {ServiceCode:aaaa,b:bbbbb}
test_data_urlencode = urllib.urlencode(test_data)
requrl =
req = urllib2.Request(url = requrl,data =test_data_urlencode)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
11
import urllib
import httplib
test_data = {ServiceCode:aaaa,b:bbbbb}
test_data_urlencode = urllib.urlencode(test_data)
requrl =
headerdata = {Host:192.168.81.16}
conn = httplib.HTTPConnection(192.168.81.16)
conn.request(method=POST,url=requrl,body=test_data_urlencode,headers = headerdata)
response = conn.getresponse()
res= response.read()
print res
對python中json的使用不清楚,所以臨時使用了urllib.urlencode(test_data)方法;
模塊urllib,urllib2,httplib的區別
httplib實現了http和https的客戶端協議,但是在python中,模塊urllib和urllib2對httplib進行了更上層的封裝。
介紹下例子中用到的函數:
1、HTTPConnection函數
httplib.HTTPConnection(host[,port[,stict[,timeout]]])
這個是構造函數,表示一次與伺服器之間的交互,即請求/響應
host 標識伺服器主機(伺服器IP或域名)
port 默認值是80
strict 模式是False,表示無法解析伺服器返回的狀態行時,是否拋出BadStatusLine異常
例如:
conn = httplib.HTTPConnection(192.168.81.16,80) 與伺服器建立鏈接。
2、HTTPConnection.request(method,url[,body[,header]])函數
這個是向伺服器發送請求
method 請求的方式,一般是post或者get,
例如:
method=POST或method=Get
url 請求的資源,請求的資源(頁面或者CGI,我們這里是CGI)
例如:
url=
或者
url=
body 需要提交到伺服器的數據,可以用json,也可以用上面的格式,json需要調用json模塊
headers 請求的http頭headerdata = {Host:192.168.81.16}
例如:
?
test_data = {ServiceCode:aaaa,b:bbbbb}
test_data_urlencode = urllib.urlencode(test_data)
requrl =
headerdata = {Host:192.168.81.16}
conn = httplib.HTTPConnection(192.168.81.16,80)
conn.request(method=POST,url=requrl,body=test_data_urlencode,headers = headerdata)
conn在使用完畢後,應該關閉,conn.close()
3、HTTPConnection.getresponse()函數
這個是獲取http響應,返回的對象是HTTPResponse的實例。
4、HTTPResponse介紹:
HTTPResponse的屬性如下:
read([amt]) 獲取響應消息體,amt表示從響應流中讀取指定位元組的數據,沒有指定時,將全部數據讀出;
getheader(name[,default]) 獲得響應的header,name是表示頭域名,在沒有頭域名的時候,default用來指定返回值
getheaders() 以列表的形式獲得header
例如:
?
1
2
3
4
5
date=response.getheader(date);
print date
resheader=
resheader=response.getheaders();
print resheader
列形式的響應頭部信息:
?
1
2
3
[(content-length, 295), (accept-ranges, bytes), (server, Apache), (last-modified, Sat, 31 Mar 2012 10:07:02 GMT), (connection, close), (etag, e8744-127-4bc871e4fdd80), (date, Mon, 03 Sep 2012 10:01:47 GMT), (content-type, text/html)]
date=response.getheader(date);
print date
取出響應頭部的date的值。
希望本文所述對大家的Python程序設計有所幫助。
㈢ python中request的get和post請求方法詳解
一、安裝:pip install requests
二、基本概念
1、POST方法
通過 POST 發送到伺服器的數據存儲在 HTTP 請求的請求主體中:
2、get方法
查詢字元串(名稱/值對)是在 GET 請求的 URL 中發送的:
3、比較 GET 與 POST
下面的表格比較了兩種 HTTP 方法:GET 和 POST。
㈣ python 關於post和get的區別
1.GET是從伺服器上獲取數據,POST是向伺服器傳送數據。
2.在客戶端,GET方式在通過URL提交數據,數據在URL中可以看到,POST方式,數據放置在HTML——HEADER內提交。
3.對於GET方式,伺服器端用Request.QueryString獲取變數的值,對於POST方式,伺服器端用Request.Form獲取提交的數據。
㈤ 如何用python requests post一段字元串
一個http請求包括三個部分,為別為請求行,請求報頭,消息主體,類似以下這樣:
請求行
請求報頭
消息主體
HTTP協議規定post提交的數據必須放在消息主體中,但是協議並沒有規定必須使用什麼編碼方式。服務端通過是根據請求頭中的Content-Type欄位來獲知請求中的消息主體是用何種方式進行編碼,再對消息主體進行解析。具體的編碼方式包括:
application/x-www-form-urlencoded
最常見post提交數據的方式,以form表單形式提交數據。application/json
以json串提交數據。multipart/form-data
一般使用來上傳文件。- url = 'htt.org/post'd = {'key1': 'value1', 'key2': 'value2'}
- r = requests.post(url, data=d)
- print r.text12341234
- url = 'httin.org/post's = json.mps({'key1': 'value1', 'key2': 'value2'})
- r = requests.post(url, data=s)
- print r.text12341234
- url = 'htt.org/post'files = {'file': open('report.txt', 'rb')}
- r = requests.post(url, files=files)
- print r.text12341234
2.7.1 以form形式發送post請求
Reqeusts支持以form表單形式發送post請求,只需要將請求的參數構造成一個字典,然後傳給requests.post()的data參數即可。
輸出:
{
「args」: {},
「data」: 「」,
「files」: {},
「form」: {
「key1」: 「value1」,
「key2」: 「value2」
},
「headers」: {
……
「Content-Type」: 「application/x-www-form-urlencoded」,
……
},
「json」: null,
……
}
可以看到,請求頭中的Content-Type欄位已設置為application/x-www-form-urlencoded,且d = {'key1': 'value1', 'key2': 'value2'}以form表單的形式提交到服務端,服務端返回的form欄位即是提交的數據。
2.7.2 以json形式發送post請求
可以將一json串傳給requests.post()的data參數,
輸出:
{
「args」: {},
「data」: 「{」key2」: 」value2」, 」key1」: 」value1」}」,
「files」: {},
「form」: {},
「headers」: {
……
「Content-Type」: 「application/json」,
……
},
「json」: {
「key1」: 「value1」,
「key2」: 「value2」
},
……
}
可以看到,請求頭的Content-Type設置為application/json,並將s這個json串提交到服務端中。
2.7.3 以multipart形式發送post請求
Requests也支持以multipart形式發送post請求,只需將一文件傳給requests.post()的files參數即可。
輸出:
{
「args」: {},
「data」: 「」,
「files」: {
「file」: 「Hello world!」
},
「form」: {},
「headers」: {……
「Content-Type」: 「multipart/form-data; boundary=」,
……
},
「json」: null,
……
}
文本文件report.txt的內容只有一行:Hello world!,從請求的響應結果可以看到數據已上傳到服務端中。