Python URLLib / URLLib2 POST
- 2025-03-21 09:05:00
- admin 原创
- 43
问题描述:
我正在尝试使用 wx/Python 创建一个超级简单的虚拟输入/输出板。我已为向将要存储数据的服务器发出的请求之一编写了以下代码:
data = urllib.urlencode({'q': 'Status'})
u = urllib2.urlopen('http://myserver/inout-tracker', data)
for line in u.readlines():
print line
没什么特别的。我遇到的问题是,根据我阅读文档的方式,这应该执行 Post 请求,因为我提供了数据参数,但这并没有发生。我在该 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 库没有发布 - 对我来说,文档表明它应该发布。
解决方案 1:
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 请求。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD