Python urllib2发送POST数据
我试图使用urllib发送POST数据,但问题通常是您对字段字典进行urlencode编码,然后将其与请求一起发送。但是我必须发送到服务器的一些字段的名称完全相同,因此使用字典我最终会从字典中删除很多数据,因为不能有两个具有相同名称和不同数据的键 我有一个字符串格式的请求数据,语法正确。var=value&var=value2&。。。我尝试将其与我的urllib请求一起发送,但每次都收到一个错误的请求。是否有其他方法在发送之前对数据进行urlencode编码,这样我就不会得到400?urllib.urlencode可以获取元组列表,允许您为参数指定多个值:Python urllib2发送POST数据,python,http,Python,Http,我试图使用urllib发送POST数据,但问题通常是您对字段字典进行urlencode编码,然后将其与请求一起发送。但是我必须发送到服务器的一些字段的名称完全相同,因此使用字典我最终会从字典中删除很多数据,因为不能有两个具有相同名称和不同数据的键 我有一个字符串格式的请求数据,语法正确。var=value&var=value2&。。。我尝试将其与我的urllib请求一起发送,但每次都收到一个错误的请求。是否有其他方法在发送之前对数据进行urlencode编码,这样我就不会得到400?urllib
>>> 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'
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数据格式而不是其他原因(例如,用户代理标头)吗?您确定400是由于POST数据格式而不是其他原因(例如,用户代理标头)?