7

我认为当您使用 post 时,post 发送了 HTTP 标头中的所有信息(显然我对这个主题不太了解),所以我很困惑为什么您必须将数据 urlencode() 转换为某种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)
4

2 回答 2

9

它与“Content-Type”标头有关:客户端必须知道 POST 数据是如何编码的,否则它如何知道如何解码?

执行此操作的标准方法是通过application/x-www-form-urlencoded编码格式。

现在,如果问题是“为什么我们需要编码?”,答案是“因为我们需要能够描述 HTTP 容器中的有效负载”。

于 2010-02-03T15:27:30.083 回答
2

数据必须采用标准application/x-www-form-urlencoded格式。urlencode将您的 args 转换为 url 编码的字符串。

于 2010-02-03T15:26:53.263 回答