python使用urllib2傳送http請求

2021-07-12 05:56:32 字數 2565 閱讀 6955

# @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類的例項...