2011-04-13 2 views
1

PHP 페이지에서 HTTP 포스트 요청을 보내려고합니다. 나는 자바와 파이썬 (파이썬을 사용한 처음)에 대한 시도를했으며, 둘 다 나에게 거의 잘 작동한다고 말할 수있다. 사실, 그들은 내 테스트 PHP 페이지에서만 잘 작동했다. 웬일인지, 어느 쪽도 나의 목표 PHP 페이지를 위해 근무하지 않았다. 제 생각에는Python에서 HTTP 포스트 요청 에뮬레이트하기

, 실패 후 요청의 문제가 발생할 수 있습니다 두 가지 이유가있을 수 :

  1. 리디렉션의 종류
  2. 서버를 발생할 수 있습니다 것은 적절한 쿠키

다음을 원한다 대상 페이지의 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> 

파이썬 :

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() 

나는 다음과 같은 오류가 발생합니다. 어떤 아이디어? 내가 paste.proxy.TransparentProxywebob.Request를 사용

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
+2

http://diveintopython.org/http_web_services/redirects.html 리디렉션을 처리하는 방법을 설명합니다. –

답변

1

...

당신은 ... 라이브러리

easy_install webob webtest paste 

또는 스크립트에서 다음

pip install webob webtest paste 

를 설치해야

당신은 애호가 쿠키를 통과 같은 요청에서 쿠키를 유지하는 등의 작업을 수행 할 필요가있는 경우

당신이 WebTest를 사용할 수있는 백업 및 것 몇 변경

from paste.proxy import TransparentProxy 
from webtest import TestApp 
app = TestApp(TransparentProxy())  
app.post("http://pathto/your_file.php", dict(field_a=value_a,field_b=value_b)) 
+0

설치해야 할 라이브러리가 있습니다. easy_install 붙여 넣기 webob webtest –

+0

안녕하세요 Tom! 그리고 빠른 편집을 해주셔서 감사합니다. 이것들은 파이썬에서의 첫 번째 줄입니다. 그래서 내가 인터넷에서 열심히 검색해도 어떻게해야 할지를 알 수 없습니다.이 라이브러리를 설치하는 방법에 대한 힌트를 제게 주시겠습니까? 우분투 10.10을 실행 중이고 NetBeans IDE 6.9.1을 사용하고 있습니까? 많은 도움을 주셔서 감사합니다! 에얼린. – user706838

+1

@eualin 당신은 파이썬에 익숙해지기 위해 다소 정교한 문제를 선택했습니다. :) 아마도 파이썬에서 라이브러리를 설치하는 것과 같은 일을하는 방법에 익숙해지기 위해서 당신을 잘 할 것입니다. 요즘 언어를 만드는 것은 도서관이기 때문에. 나는 당신이라면 virtualenv를 설치할 것이다. http://simononsoftware.com/virtualenv-tutorial/ 다음 libs 모든 종류의 놀 수 있고 시스템 파이썬 난파 없습니다. –