首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python URLLib / URLLib2帖子

Python URLLib / URLLib2帖子
EN

Stack Overflow用户
提问于 2010-07-13 23:53:04
回答 1查看 116.2K关注 0票数 39

我正在尝试使用wx/Python创建一个超级简单的Virtual In / Out Board。我已经为我对服务器的一个请求准备了以下代码,我将在服务器上存储数据:

代码语言:javascript
复制
data = urllib.urlencode({'q': 'Status'})
u = urllib2.urlopen('http://myserver/inout-tracker', data)
for line in u.readlines():
  print line

那里没什么特别的。我遇到的问题是,根据我读取文档的方式,这应该执行一个Post请求,因为我已经提供了data参数,而这并没有发生。我在该url的索引中有以下代码:

代码语言:javascript
复制
if (!isset($_POST['q'])) { die ('No action specified'); }
echo $_POST['q'];

每次我运行我的Python应用程序时,我都会得到“没有指定操作”的文本打印到我的控制台上。我将尝试使用Request对象来实现它,因为我已经看到了一些包含这些对象的演示,但我想知道是否有人可以帮助我解释为什么使用此代码无法获得Post请求。谢谢!

--编辑--

这段代码可以正常工作并发布到我的网页上:

代码语言:javascript
复制
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库不能发布-文档告诉我它应该这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-14 00:29:26

代码语言:javascript
复制
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请求。

票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3238925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档