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 コメント:
コメントを投稿