the_url: 请求地址
method 请求方法(get,post)
return_type: 返回格式解析
request_suffix: 请求地址的后缀,如jsp,net
_timeout: 超时时间
kwargs: 请求参数
"""
http_url = "%s.%s" (the_url, request_suffix) if request_suffix else the_url
if request_type == 'json':
headers['Content-Type'] = 'application/json'
# method = _HTTP_POST
# json_data = json.dumps(kwargs)
# # convert str to bytes (ensure encoding is OK)
# params = json_data.encode('utf-8')
params = json.dumps(kwargs)
else:
params = encode_params(**kwargs)
http_url = '%s?%s' % (http_url, params) if method == _HTTP_GET else http_url
print http_url
# u = urlparse(http_url)
# headers.setdefault("host", u.hostname)
http_body = None if method == _HTTP_GET else params
req = urllib2.Request(http_url, data=http_body, headers=headers)
callback = globals().get('_parse_{0}'.format(return_type))
if not hasattr(callback, '__call__'):
print "return '%s' unable to resolve" % return_type
callback = _parse_json
try:
resp = urllib2.urlopen(req, timeout=_timeout if _timeout else TIMEOUT)
body = _read_body(resp)
r = callback(body)
# if hasattr(r, 'error_code'):
# raise APIError(r.error_code, r.get('error', ''), r.get('request', ''))
return r
except urllib2.HTTPError, e:
try:
body = _read_body(e)
r = callback(body)
return r
except:
r = None
# if hasattr(r, 'error_code'):
# raise APIError(r.error_code, r.get('error', ''), r.get('request', ''))










