2017. 9. 14.

[PYTHON] httplib 모듈에서 request와 putrequest 의 차이

파이썬에서 웹 통신을 할때, 사용하는 라이브러리 중 httplib 가 있다. 가장 기본적인 코드는 아래와 같을 것이다.

import httplib

conn=httplib.HTTPConnection("httpbin.org/") # Do not use "http://"
conn.request("GET","/get")
r1 =conn.getresponse()
print r1.status
print r1.reason
print r1.read()

그리고 평소 궁금했었는데 해결된 궁금증이 있다. "putrequest와 request 변수의 차이점"이 바로 그것이다.

해결 :  request 함수는 변수의 인자로 헤더값을 넣을 수 있다. 때문에 헤더값을 따로 넣지않더라도 end of header를 알리기 위해서 공백라인을 서버에 전달한다.
반면 putrequest 함수는 인자로 헤더값을 넣을 수 없다. putheader 함수로 별도로 넣어줘야 한다. putrequest 를 사용했는데 putheader를 사용안하면 에러가 발생한다.

글로 표현하니까 조금 어렵게 들린다. 

위 처럼 헤더값 입력 없이 /get 메소드만 요청할 때는 request 를 사용하고 


위 처럼 header 한 라인씩 입력할 때는 putrequest 를 입력하고 putheader 로 헤더값을 삽입한다.

보통 파라미터나 헤더값을 입력 할 때는 사전(Dictionary)을 이용하는 것 같다.

import httplib, urllib
params = urllib.urlencode({'spam': 1, 'eggs':2, 'bacon':0})
headers={"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
conn=httplib.HTTPconnection("www.site.com")
conn.request("POST","/cgi-bin/query", params, headers)
response = conn.getresponse()



Popular Posts

Recent Posts

Powered by Blogger.