g.d*_*d.c 37 python post urllib urllib2
我正在尝试使用wx/Python创建一个超级简单的虚拟输入/输出板.对于我将要存储数据的服务器的一个请求,我有以下代码:
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 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()
我仍然不确定为什么urllib2库在我提供数据参数时不发布 - 对我来说文档表明它应该.
bob*_*nce 47
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请求.
| 归档时间: | 
 | 
| 查看次数: | 111164 次 | 
| 最近记录: |