【发布时间】:2011-04-13 23:14:06
【问题描述】:
我正在尝试在 PHP 页面中发送 HTTP 发布请求。我尝试了 Java 和 Python(这是我第一次使用 Python),我可以说它们对我来说几乎都很好。实际上,它们仅适用于我的测试 PHP 页面。出于某种原因,它们都不适用于我的目标 PHP 页面。
在我看来,可能导致post请求不成功的两个原因可能是:
- 可能会发生某种重定向
- 服务器需要一个合适的 cookie
接下来,您将找到目标页面的 HTML 代码和应该可以工作的 Python 代码。
HTML:
<form id="m713a0moduleform_2" method="post" action="http://www.X.Y/index.php?page=login" class="cms_form">
<input type="hidden" name="mact" value="FrontEndUsers,m713a0,do_login,1" />
<input type="hidden" name="m713a0returnid" value="794" />
<input type="hidden" name="page" value="794" />
<input type="hidden" name="m713a0form" value="login" />
<input type="text" class="cms_textfield" name="m713a0feu_input_username" id="m713a0feu_input_username" value="" size="10" maxlength="40" />
<input type="password" class="cms_password" name="m713a0feu_input_password" value="" size="10" maxlength="10" />
<input class="cms_submit" name="m713a0feu_btn_login" id="m713a0feu_btn_login" value="Sign in" type="submit" class="signin_button" />
</form>
Python:
import urllib
params = urllib.urlencode({"mact":"FrontEndUsers,m713a0,do_login,1","m713a0returnid":"18","page":"18","m713a0form":"login","m713a0feu_input_username":"Z","m713a0feu_input_password":"W","m713a0feu_btn_login":"Sign in"})
f = urllib.urlopen("http://www.X.Y/index.php?page=login", params)
print f.read()
我收到以下错误。有什么想法吗?
Traceback(最近一次调用最后一次):
文件“/X/Y/Z/NewPythonProject2/src/newpythonproject2.py”,第 34 行,在
从 paste.proxy 导入透明代理
ImportError:没有名为 paste 的模块
【问题讨论】:
标签: php python http post request