python requests로 post 처리를 하고 싶어요.
조회수 2651회
flask로 만든 제 홈페이지에 파이썬 requests를 통해서 접근하고 싶어요.
import requests
URL = 'http://cyphers.herokuapp.com'
payload = {
'myName': '착한어른이',
}
session = requests.session()
r = requests.post(URL, data=payload)
print(r.text)
그러나 결과값은 다음과 같습니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>
html 코드입니다.
<p class="a">
<form action = "./output" method = "post">
<p>닉네임을 입력하세요:</p>
<p><input type = "text" name = "myName" /></p>
<p><input type="radio" name="gametype" value="rating" checked="checked">공식
<input type="radio" name="gametype" value="normal">일반</p>
<p><input type = "submit" value = "submit" /></p>
</form>
</p>
어디를 잘못 지정한 건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
http://cyphers.herokuapp.com
은 닉네임을 입력해서 전적을 검색하는 폼을 보여주는 화면이고, 그 폼이 (그리고 새로 작성하고 계신 스크립트가) 접근하려는 POST 요청은http://cyphers.herokuapp.com/output/
으로 보내는 것 아닌지요? 그렇다면 주신 소스에서URL
을URL = 'http://cyphers.herokuapp.com/output/'
으로 바꾸시면 처리가 될 것 같네요.
+ 어디가 잘못되었는가?:
HTTP 405
는 "지금 그 방식(method)으로는 이 리소스에 접근할 수 없다"라는 에러입니다.cyphers.herokuapp.com/
에POST
요청을 보낼 수 없게 지정되어 있는가 봅니다. (@app.route()
대신@app.get()
만 썼다든지)+ 지금
http://
로 시작하는 heroku 주소를 사용하고 계신데, 사실 헤로쿠는 HTTPS를 지원합니다.https://cyphers.herokuapp.com
으로 바꿔서 사용하시기를 추천합니다.- 정말 최고에요. 지난번에 말씀해주신 flask로 웹사이트도 완성했구요! asyncio부분도 덕분에 완성할 수 있었습니다. 이번에도 너무 많은 도움 받아가네요! 알 수 없는 사용자 2019.8.26 18:36
댓글 입력