試試這個:
import urllib.request
import urllib.parse
import base64
def encode_credentials(username, password):
byte_creds = '{}:{}'.format(username, password).encode('utf-8')
return base64.b64encode(byte_creds).decode('utf-8')
def tweet(username, password, message):
encoded_msg = urllib.parse.urlencode({'status': message})
credentials = encode_credentials(username, password)
request = urllib.request.Request(
'http://api.twitter.com/1/statuses/update.json')
request.add_header('Authorization', 'Basic ' + credentials)
urllib.request.urlopen(request, encoded_msg)
然後調用tweet('username', 'password', 'Hello twitter from Python3!')
。
urlencode
函數爲HTTP POST
請求準備消息。
Request
的對象使用HTTP認證按此處的說明:http://en.wikipedia.org/wiki/Basic_access_authentication
的urlopen
方法將請求發送到鳴叫聲。當你傳遞一些數據時,它使用POST
,否則爲GET
。
這隻使用Python3標準庫的一部分。但是,如果您想使用HTTP,則應重新考慮使用第三方庫。這Dive Into Python 3 chapter解釋如何和爲什麼。
工程就像一個魅力, - 任何人試圖它的注意點,如果你發送相同的消息兩次,它會拋出一個異常。 – Andrew 2010-05-14 13:50:21