いくつかのWebフォームにPythonスクリプトを入力し、POSTリクエストで送信したいと思います。問題は、フォームにfileuploadingがあることです。私はこれを見つけました:Pythonのポスター。それで、私はフォーム付きのウェブサイトでFireBugを持ってきて、それを記入しました。私が見たもの:
values[action] add_save
values[mod] blog
values[depth] 2
values[pid] 121
values[title] title
values[title_eng] title_en
img PNG...[a lot of binary image data]
そのサイトは承認を使用しているので、私は次のことを行っています。
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = poster.streaminghttp.register_openers()
opener.add_handler(authhandler)
今、私はウェブサイトからデフォルトのサンプルを持ってきて、コードを書きました:
index = """some parsed integer"""
datagen, headers = multipart_encode({
'values[action]': 'add_save',
'values[mod]': 'blog',
'values[depth]': '2',
'values[pid]': index,
'values[title]' : 'title',
'values[title_eng]' : 'title_eng',
'img': open('1.png', 'rb')
})
request = urllib2.Request(theurl, datagen, headers)
getdata = urllib2.urlopen(request)
print getdata.read()
エラーなどはありません。しかし、POSTを送信した後、スクリプトはそれをデータベースに追加しません(手動で行う場合は、すべて問題ありません)。
私はこのコードを追加しました:
for value in datagen:
print value
そして結果は次のとおりです:link。(テキスト内の123の数値は、そのインデックス変数値です)。