Python URLLib / URLLib2 POST
我正在尝试使用wx / Python创build一个超简单的虚拟input/输出板。 我已经得到了下面的代码,我的要求之一,我将存储数据的服务器:
data = urllib.urlencode({'q': 'Status'}) u = urllib2.urlopen('http://myserver/inout-tracker', data) for line in u.readlines(): print line
没有什么特别的。 我遇到的问题是,根据我如何阅读文档,这应该执行一个Post Request,因为我提供了数据参数,这不会发生。 我有这个代码在该url的索引:
if (!isset($_POST['q'])) { die ('No action specified'); } echo $_POST['q'];
每次运行我的Python应用程序时,都会将“未指定动作”文本打印到控制台中。 我将尝试使用请求对象来实现它,因为我已经看过一些演示,包括这些,但是我想知道是否有人可以帮我解释为什么我没有得到这个代码的Post请求。 谢谢!
– 编辑 –
此代码确实工作,并正常发布到我的网页:
data = urllib.urlencode({'q': 'Status'}) h = httplib.HTTPConnection('myserver:8080') headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"} h.request('POST', '/inout-tracker/index.php', data, headers) r = h.getresponse() print r.read()
我仍然不确定为什么urllib2库不提供数据参数时发布 – 对我来说文档表明它应该。
u = urllib2.urlopen('http://myserver/inout-tracker', data) h.request('POST', '/inout-tracker/index.php', data, headers)
使用path/inout-tracker
没有拖尾/
不抓取index.php
。 相反,服务器将发出一个302
redirect到尾随/
的版本。
执行302通常会导致客户端将POST转换为GET请求。