AttributeError: 'tuple'对象没有'startswith'属性,使用Python httplib时
我正在尝试用Python获取账户信息,这里用的是OAuth 1.0认证。下面是我的代码:
token_url = "oauth/token?" + urlencode(ksort(params)) + "&sig=%s",sig
conn = httplib.HTTPSConnection(url, 443)
conn.request("GET", token_url)
这里出现了这个错误:
Traceback (most recent call last):
File "C:\Users\windows\Desktop\https.py", line 35, in <module>
conn.request("GET", token_url)
File "C:\Python27\lib\httplib.py", line 973, in request
self._send_request(method, url, body, headers)
File "C:\Python27\lib\httplib.py", line 1001, in _send_request
self.putrequest(method, url, **skips)
File "C:\Python27\lib\httplib.py", line 900, in putrequest
if url.startswith('http'):
AttributeError: 'tuple' object has no attribute 'startswith'
连接是正常的,但我无法继续进行接下来的HTTPS请求。
1 个回答
2
你传递的是一个元组,而不是一个字符串:
>>> sig = 'sig'
>>> 'oauth/token?blahblah&' + 'sig=%s', sig
('oauth/token?blahblah&sig=%s', 'sig')
>>> 'oauth/token?blahblah&' + 'sig=%s' % sig
'oauth/token?blahblah&sig=sig'
把下面这一行替换成:
token_url = "oauth/token?" + urlencode(ksort(params)) + "&sig=%s",sig
^
用这个:
token_url = "oauth/token?" + urlencode(ksort(params)) + "&sig=%s"%sig