[英]Python URLLib / URLLib2 POST
我正在尝试使用wx / Python创建超简单的虚拟输入/输出板。 对于要存储数据的服务器的请求之一,我已经准备好以下代码:
data = urllib.urlencode({'q': 'Status'})
u = urllib2.urlopen('http://myserver/inout-tracker', data)
for line in u.readlines():
print line
没什么特别的。 我遇到的问题是,根据我阅读文档的方式,这应该执行“发布请求”,因为我已经提供了data参数,但这种情况没有发生。 我在该网址的索引中包含以下代码:
if (!isset($_POST['q'])) { die ('No action specified'); }
echo $_POST['q'];
每次我运行Python App时,都会在控制台上显示“未指定操作”文本。 我将尝试使用请求对象来实现它,因为我已经看到了一些包含这些对象的演示,但是我想知道是否有人可以帮助我解释为什么我没有收到带有此代码的Post Request。 谢谢!
-编辑-
此代码可以正常工作,并且可以正确地发布到我的网页上:
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()
我仍然不确定为什么在提供data参数时urllib2库不发布-对我来说文档指示应该。
u = urllib2.urlopen('http://myserver/inout-tracker', data)
h.request('POST', '/inout-tracker/index.php', data, headers)
使用路径/inout-tracker
不带尾部/
不会获取index.php
。 取而代之的是,服务器将发布302
重定向到带有/
的版本。
执行302通常会导致客户端将POST转换为GET请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.