복붙노트

[PYTHON] 파이썬 URLLib / URLLib2 POST

PYTHON

파이썬 URLLib / URLLib2 POST

wx / Python을 사용하여 초소형 가상 입출력 보드를 만들려고합니다. 나는 데이터를 저장할 서버에 대한 나의 요청 중 하나를 위해 다음 코드를 준비했다.

data = urllib.urlencode({'q': 'Status'})

u = urllib2.urlopen('http://myserver/inout-tracker', data)

for line in u.readlines():
  print line

특별한 일은 없습니다. 내가 가지고있는 문제는 데이터를 제공했기 때문에 문서를 읽는 방식에 기반하여 게시 요청을 수행해야한다는 것입니다. 그 URL에 대한 색인에이 코드가 있습니다.

if (!isset($_POST['q'])) { die ('No action specified'); }

echo $_POST['q'];

그리고 파이썬 응용 프로그램을 실행할 때마다 '지정된 작업 없음'텍스트가 내 콘솔에 인쇄됩니다. 나는 그것들을 포함하는 몇 가지 데모들을 보았을 때 Request Objects를 사용하여 구현하려고 시도 할 것이다. 그러나 누군가 내가 왜이 코드로 포스트 요청을 얻지 못하는지를 설명 할 수 있는지 궁금하다. 감사!

- 편집 됨 -

이 코드는 제대로 작동하고 내 웹 페이지에 제대로 게시됩니다.

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

나는 아직도 urllib2 라이브러리가 데이터 매개 변수를 제공 할 때 게시하지 않는다는 것을 확신하지 못한다.

해결법

  1. ==============================

    1.

    u = urllib2.urlopen('http://myserver/inout-tracker', data)
    h.request('POST', '/inout-tracker/index.php', data, headers)
    

    trail / inout-tracker를 후행없이 사용하면 / index.php를 가져 오지 않습니다. 대신 서버는 후행 /이있는 버전으로 302 리디렉션을 실행합니다.

    일반적으로 302를 수행하면 클라이언트가 POST를 GET 요청으로 변환합니다.

  2. from https://stackoverflow.com/questions/3238925/python-urllib-urllib2-post by cc-by-sa and MIT license