我正嘗試在PHP頁面中發送HTTP發佈請求。我嘗試了Java和Python(這是我第一次使用Python),我可以說他們兩個對我來說都工作得很好。事實上,他們工作得很好,只爲我的測試PHP頁面。出於某種原因,他們都沒有爲我的目標PHP頁面工作。在Python中模擬HTTP發佈請求
在我看來,這可能會導致不成功的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 (most recent call last): File "/X/Y/Z/NewPythonProject2/src/newpythonproject2.py", line 34, in from paste.proxy import TransparentProxy ImportError: No module named paste
http://diveintopython.org/http_web_services/redirects.html描述瞭如何處理重定向。 – 2011-04-13 23:19:20