Ben*_*man 3 python post custom-action
我想只使用原始字符串发送POST请求.
我正在写一个解析器.我已经加载了页面,并在firebug中看到了许多标题和正文的复杂请求:
__EVENTTARGET=&__EVENTARGUMENT=&__VIEW.... (11Kb or unreadable text)
Run Code Online (Sandbox Code Playgroud)
如何再次发送此确切请求(标题+帖子正文)手动(将其作为一个巨大的字符串传递)?
喜欢:
func("%(headers) \n \n %(body)" % ... )
Run Code Online (Sandbox Code Playgroud)
我希望它由我的脚本发送(和响应处理),并且不想手动创建参数和标题的字典.
谢谢.
另一个答案太大而且令人困惑,而且显示的不仅仅是你所要求的.我觉得我应该为未来的读者提供一个更简洁的答案:
import urllib2
import urllib
import urlparse
# this was the header and data strings you already had
headers = 'baz=3&foo=1&bar=2'
data = 'baz=3&foo=1&bar=2'
header_dict = dict(urlparse.parse_qsl(headers))
r = urllib2.Request('http://www.foo.com', data, headers)
resp = urllib2.urlopen(r)
Run Code Online (Sandbox Code Playgroud)
您至少需要将标题解析为dict,但它的工作量很小.然后将其全部传递给新请求.
*注意:这个简洁的示例假设您的标题和数据正文都是application/x-www-form-urlencoded格式.如果标题是原始字符串格式Key: Value,那么请参阅另一个答案,了解有关解析该标题的更多详细信息.
最终,您不能只复制粘贴原始文本并运行新请求.它必须以适当的格式分为标题和数据.