urllib.encode
не предназначен для urlen-кодирования одного значения (так как функции с одинаковыми именами во многих языках), но предназначен для кодирования набора отдельных значений.Например, если бы у меня был dict {"a": 1, "b": 2}
, он бы вывел строку "a=1&b=2"
.
Сначала вы хотите закодировать ваш dict как JSON.
data = {"media": [{"type":"flash", "swfsrc":"http://shopperspoll.webfactional.com/media/flashFile.swf", "height": '100', "width": '100', "expanded_width":"160", "expanded_height":"120", "imgsrc":"http://shopperspoll.webfactional.com/media/laptop1.jpg"}]}
import json
json_encoded = json.dumps(data)
Затем вы можетеиспользуйте urllib.encode
для создания полной строки запроса
import urllib
urllib.encode({"access_token": example, "attachment": json_encoded})
# produces a long string in the form "access_token=...&attachment=..."
или используйте urllib.quote
, чтобы просто закодировать параметр вложения
urllib.quote(json_encoded)
# produces just the part following "&attachment="