Python urllib2发送POST数据
问题描述:
我正在尝试使用urllib发送POST数据,但问题通常是您urlencode字段的字典,然后将其与您的请求一起发送。但是我必须发送给服务器的一些字段被命名为完全相同的名称,因此使用字典时,我最终会从字典中删除大量数据,因为您不能拥有两个具有相同名称的密钥,并且不同的数据。Python urllib2发送POST数据
我有我的请求数据在正确的语法的字符串格式(例如,VAR =价值& VAR =数值& ......),我尝试发送与我的urllib请求一起,但我得到一个错误的请求每次。在发送之前是否有任何其他方式对数据进行urlencode编码,所以我没有得到400?
答
urllib.urlencode()
可以采取一个元组列表,让您获得一个参数指定多个值:
>>> urlencode([("var", "value"), ("var", "value2")])
'var=value&var=value2'
或者使用地图列表作为值:
>>> p = {"var": ["value", "value2"], "var2": ["yetanothervalue"]}
>>> urlencode([(k, v) for k, vs in p.items() for v in vs])
'var=value&var=value2&var2=yetanothervalue'
你甚至可以允许列表或字符串作为值,但它变得不那么简洁:
>>> p = {"var": ["value", "value2"], "var2": "yetanothervalue"}
>>> urlencode([(k, v) for k, vs in p.items()
... for v in isinstance(vs, list) and vs or [vs]])
'var=value&var=value2&var2=yetanothervalue'
你确定400是由于POST数据格式,而不是其他(例如,用户代理头)? – SimonJ 2010-11-15 01:24:58