2010-02-03 4 views
7

게시글을 사용했을 때 게시물이 HTTP 헤더의 모든 정보를 보냈다는 것을 알았습니다 (이유는 잘 모르겠습니다). 따라서 데이터를 key=value&key2=value2 형식으로 urlencode()해야하는 이유가 혼란 스럽습니다. 어떻게 그 POST를 사용하는 경우? 플레이에 와서 서식을Python : urllib2.urlopen (url, data) 왜 데이터를 urllib.urlencode()해야합니까?

# Fail 
data = {'name': 'John Smith'} 
urllib2.urlopen(foo_url, data) 

하지만

# Success 
data = {'name': 'John Smith'} 
data = urllib.urlencode(data) 
urllib2.urlopen(foo_url, data) 

답변

9

"Content-Type"헤더와 관련되어 있습니다. 클라이언트는 POST 데이터가 어떻게 인코딩되는지에 대한 아이디어가 있어야합니다. 그렇지 않으면 어떻게 디코딩해야하는지 어떻게 알 수 있습니까?

표준 방법은 application/x-www-form-urlencoded 인코딩 형식을 사용하는 것입니다.

"왜 인코딩해야합니까?"라는 질문은 "HTTP 컨테이너에서 페이로드를 설명 할 수 있어야하기 때문에"입니다.

2

데이터 표준 응용 프로그램/x-www-form-urlencoded를 형식이어야합니다. urlencode는 args를 url로 인코딩 된 문자열로 변환합니다.

관련 문제