twitterに画像付きツイートをするにあたって、multipart/form-data送信をする必要があり、
requestsライブラリを自前でインストールする必要性があり、既存のパッケージでできないのかなーっと
探していたら、urllib2を使って送信する方法を見つけました。
urllib2のみでmultipart/form-dataを送る
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
url = r"http://test.example.com/path/to/form"
boundary = u"--------python"
encoding = "utf-8"
# formの内容の辞書
form_dict = dict(user=u"hoge", pass=u"日本語もおk")
# form_dict辞書内の要素数だけ区切り線で分けたbodyを作る
def multipart_formdata(form_dict):
disposition = u'Content-Disposition: form-data; name="%s"'
lines = []
for k, v in form_dict.iteritems():
lines.append(u'--' + boundary)
lines.append(disposition % k)
lines.append(u'')
lines.append(v)
lines.append(u"--" + boundary + u"--")
lines.append(u'')
value = u"\r\n".join(lines)
return value.encode(encoding)
# ヘッダにContent-Typeを指定
def request_with_multipart_formdata():
req = urllib2.Request(url)
req.add_header("Content-Type","multipart/form-data; boundary=%s" % boundary.encode(encoding))
data = multipart_formdata(form_dict)
conn = urllib2.urlopen(req, data)同エントリーでは、euc-jpでエンコードされていましたが、utf-8ベースでutf-8エンコード。
0 コメント:
コメントを投稿