本文目錄一覽:
- 1、python 怎麼處理http post 的請求參數
- 2、怎麼知道python發送了什麼http請求
- 3、python里同時發送多個http請求怎麼弄
- 4、怎麼用http上傳一個文件到伺服器 python
- 5、如何用Python寫一個http post請求
- 6、如何使用python立即發送http請求參數
python 怎麼處理http post 的請求參數
import httplib, urllib
from urlparse import urlparse
def httppost(url, **kwgs):
httpClient = None
conn = urlparse(url)
try:
params = urllib.urlencode(dict(kwgs))
header = {“Content-type”: “application/x-www-form-urlencoded”,”Accept”: “text/plain”, }
httpClient = httplib.HTTPConnection(conn.netloc, conn.port, timeout=30)httpClient.request(“POST”, conn.path, params, header)response = httpClient.getresponse()
print response.status
print response.reason
print response.read()
print response.getheaders()
except Exception, e:
print e
finally:
if httpClient:
httpClient.close()
怎麼知道python發送了什麼http請求
本文實例講述了python通過get,post方式發送http請求和接收http響應的方法。分享給大家供大家參考。具體如下:
測試用CGI,名字為test.py,放在apache的cgi-bin目錄下:
#!/usr/bin/python
import cgi
def main():
print “Content-type: text/html\n”
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中。
方法一、
import urllib
import urllib2
url = “test.py?ServiceCode=aaaa”
req = urllib2.Request(url)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
import httplib
url = “hest/test.py?ServiceCode=aaaa”
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 = “/python_test/test.py”
req = urllib2.Request(url = requrl,data =test_data_urlencode)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
import urllib
import httplib
test_data = {‘ServiceCode’:’aaaa’,’b’:’bbbbb’}
test_data_urlencode = urllib.urlencode(test_data)
requrl = “python_test/test.py”
headerdata = {“Host”:”116″}
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(“1.16″,80) 與伺服器建立鏈接。
2、HTTPConnection.request(method,url[,body[,header]])函數
這個是向伺服器發送請求
method 請求的方式,一般是post或者get,
例如:
method=”POST”或method=”Get”
url 請求的資源,請求的資源(頁面或者CGI,我們這裡是CGI)
例如:
url=”htti-bin/python_test/test.py” 請求CGI
或者
url=”ht_test/test.html” 請求頁面
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 = “hgi-bin/python_test/test.py”
headerdata = {“Host”:”192.116″}
conn = httplib.HTTPConnection(“196″,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
例如:
date=response.getheader(‘date’);
print date
resheader=”
resheader=response.getheaders();
print resheader
列形式的響應頭部信息:
[(‘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里同時發送多個http請求怎麼弄
多個同進的話,使用多線程就可以,也可以使用多進程,多進程可以更好的利用多核CPU的能力。
怎麼用http上傳一個文件到伺服器 python
首先,標準HTTP協議對上傳文件等表單的定義在這裡:wwwietforg/rfc/rfc1867txt 大概數據包格式如下:
單文件:
Content-type: multipart/form-data, boundary=AaB03x
–AaB03x
content-disposition: form-data; name=”field1″
Joe Blow
–AaB03x
content-disposition: form-data; name=”pics”; filename=”file1.txt”
Content-Type: text/plain
… contents of file1.txt …
–AaB03x–
多文件:
Content-type: multipart/form-data, boundary=AaB03x
–AaB03x
content-disposition: form-data; name=”field1″
Joe Blow
–AaB03x
content-disposition: form-data; name=”pics”
Content-type: multipart/mixed, boundary=BbC04y
–BbC04y
Content-disposition: attachment; filename=”file1.txt”
其次,python上傳文件的幾種方法:
1 自己封裝HTTP的POST數據包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python
import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest(‘POST’, selector) h.putheader(‘content-type’, content_type) h.putheader(‘content-length’, str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = ‘———-lImIt_of_THE_fIle_eW_$’ CRLF = ‘\r\n’ L = [] for (key, value) in fields: L.append(‘–‘ + LIMIT) L.append(‘Content-Disposition: form-data; name=”%s”‘ % key) L.append(”) L.append(value) for (key, filename, value) in files:
如何用Python寫一個http post請求
import urllib2
import urllib
#定義一個要提交的數據數組(字典)
data = {}
data[‘username’] = ‘zgx030030’
data[‘password’] = ‘123456’
#定義post的地址
url = ”
post_data = urllib.urlencode(data)
#提交,發送數據
req = urllib2.urlopen(url, post_data)
#獲取提交後返回的信息
content = req.read()
print content
如果解決了您的問題請採納!
如果未解決請繼續追問!
如何使用python立即發送http請求參數
首先安裝requests:
pip install requests
(附requests說明:)
然後使用python:
import requests
resp = requests.post(‘url’,{a:1, b:2})
print(resp.content)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/291897.html