def url_request(self, method_, url_, payloads_, headers_):
"""
@params: method, http method, 'GET' or 'POST', or 'PUT', or 'DELETE', or 'HEAD'
url, url, string, absolute url of resource at goal webserver
payloads, dict or None, extra data to send when visit certain resource
headers, dict or None, customed headers
@return: if http status is 200, this function will return [[data], url, payloads, headers]
if occurs connection error or http status is not 200, this function will return None
"""
try:
header = self.default_headers if headers_ is None else headers_
payloads = urllib.urlencode(payloads_) if payloads_ is not None else None
if payloads is not None:
pass
rqst = self.session.request(method=method_, url=url_, params=payloads, headers=header, timeout=10)
if 'Set-Cookie' in rqst.headers or 'Set-Cookie2' in rqst.headers:
self.session.cookies.save(ignore_discard=True)
if rqst.status_code != 200:
rqst = self.session.request(method=method_, url=url_, params=payloads, headers=header, timeout=10)
if rqst.status_code != 200:
gl.g_fail_url.warning('%s %s'%(url_, str(payloads_)))
return None
return HttpQuint(url_, headers_, payloads_, [rqst.content], rqst.headers)
#return [[rqst.content], method_, url_, payloads_, headers_]
except (requests.HTTPError, requests.Timeout, requests.ConnectionError, requests.TooManyRedirects), e:
tips = '%s when visit %s '%(e, url_) if payloads_ is None else '%s when \
visit %s with data %s'%(e, url_, str(payloads_).decode('unicode_escape'))
self.logger.error(tips)
gl.g_fail_url.warning('%s %s'%(url_, str(payloads_)))
return None
评论列表
文章目录