猿问

Python URLLib / URLLib2开机自检

我正在尝试使用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库不发布-对我来说文档指示应该。


慕田峪9158850
浏览 345回答 1
1回答

梦里花落0921

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请求。
随时随地看视频慕课网APP

相关分类

Python
我要回答