http://atlee.ca/software/poster/poster.encode.html
http://zh-cn.w3support.net/index.php?db=so&id=680305
http://oldj.net/article/python-upload-file-via-form-post/
http://pypi.python.org/pypi/poster/
提供的一个接口方法需要上传数据,类型为enctype类型为:multipart/form-data
实现代码如下:
def getUrllib2(self, upload = False, redirect = False):
global _cookieProcessor
if upload:
handlers = poster.streaminghttp.get_handlers()
else:
handlers = []
err = HTTPError()
handlers.append(err)
handlers.append(_cookieProcessor)
# handlers.append(Urllib2RedirectHandle)
# if not redirect:
# handlers.append(Urllib2RedirectHandle)
try:
pener = urllib2.build_opener(*handlers)
except Exception, e:
print err.getErrorMsg()
raise e
# return None
return opener
def sendMultipartPost(self, url, params, files):
posterParams = []
for key in params:
value = params[key]
print value
posterParams.append(poster.encode.MultipartParam(key, value))
for key in files:
value = files[key]
print value
posterParams.append(poster.encode.MultipartParam.from_file(key, value))
datagen, headers = poster.encode.multipart_encode(posterParams)
if headers is None:
headers = {}
request = urllib2.Request(url, datagen, headers)
try:
pener = self.getUrllib2(True, False)
response = opener.open(request)
except urllib2.HTTPError, e:
# getLogger().error('sendMultipartPost error:%d,url=%s' % (e.code, url))
print e, url, headers
return None
return response
转载: http://www.51testing.com/?uid-213912-action-viewspace-itemid-243301