# @param method: 請求方式,字串,僅支援get、post、put、delete、head
# @param user_header:請求頭,字典,
# @param request_body_type:請求體型別,字串,僅支援form-data、x-www-form-urlencoded、raw格式
# @param request_body_data:請求體,字串或者字典。
# # 1、如果是form-data、x-www-form-urlencoded格式的,傳字典;
# # 2、如果是raw格式的,可傳字典或字串。
# ##
defget_api_response
(url, method, user_header, request_body_type, request_body_data):
try:
# get請求
if re.match(method, "get", re.ignorecase):
request = urllib2.request(url)
# post請求/put請求
elif re.match(method, "post", re.ignorecase) or re.match(method, "put", re.ignorecase):
# 處理form-data格式請求體
if re.match(request_body_type, "form-data", re.ignorecase):
register_openers()
# headers 包含必須的 content-type 和 content-length
# data 是乙個生成器物件,返回編碼過後的引數
data, headers = multipart_encode(request_body_data)
request = urllib2.request(url, data, headers)
# 處理x-www-form-urlencoded格式請求體
elif re.match(request_body_type, "x-www-form-urlencoded", re.ignorecase):
data = urllib.urlencode(request_body_data)
request = urllib2.request(url, data)
# 處理raw格式請求體
elif re.match(request_body_type, "raw", re.ignorecase):
if type(request_body_data) == str:
data = json.jsondecoder().decode(request_body_data)
else:
data = request_body_data
if type(data) == list:
data = json.jsonencoder().encode(data)
else:
data = urllib.urlencode(data)
request = urllib2.request(url, data)
if re.match(method, "put", re.ignorecase):
request.get_method = lambda: 'put'
# delete請求
elif re.match(method, "delete", re.ignorecase):
request = urllib2.request(url)
request.get_method = lambda: 'delete'
# head請求
else:
request = urllib2.request(url)
request.get_method = lambda: 'head'
# 統一新增請求頭
urllib2使用總結
urllib2庫是涉及到url資源請求的常用庫 官方文件 urllib2 extensible library for opening urls 常用函式 urllib2.urlopen url data timeout cafile capath cadefault context url 可以是...
urllib2使用總結
urllib2是python的乙個獲取urls的元件。他以urlopen函式的形式提供了乙個非常簡單的介面,具有利用不同協議獲取urls的能力,同樣提供了乙個比較複雜的介面來處理一般情況。urllib2支援獲取不同格式的urls例如 ftp gopher等,並利用它們相關網路協議進行獲取。urlli...
urllib2使用初探
在入門urllib2之前,我想應該先調研一下urllib與urllib2的區別 1 首先我們要明白的是,這兩個模組不可以相互替代.兩者都是接受url請求的模組,但是提供了不同的功能,兩個顯著的區別是 1.對於乙個url的request,urllib2.urlopen可以接受乙個request類的例項...