Я думал, что сообщение отправило всю информацию в HTTP-заголовках при использовании сообщения (на меня не хорошо доносят этот предмет, очевидно), таким образом, я смущен, почему у Вас есть к urlencode () данные к a key=value&key2=value2
формат. Как то форматирование играет роль при использовании POST?:
# Fail
data = {'name': 'John Smith'}
urllib2.urlopen(foo_url, data)
но
# Success
data = {'name': 'John Smith'}
data = urllib.urlencode(data)
urllib2.urlopen(foo_url, data)
Это связано с заголовком Content-Type: клиент должен иметь представление о том, как кодируются данные POST, иначе как он узнает, как декодировать его?
Стандартный способ сделать это - использовать формат кодирования application / x-www-form-urlencoded .
Теперь, если вопрос: «Зачем нам нужно кодировать?», Ответ будет «потому что нам нужно иметь возможность очерчивать полезную нагрузку в HTTP-контейнере».
Данные должны быть в стандартном формате application / x-www-form-urlencoded . urlencode
преобразует ваши аргументы в строку в кодировке url.