Python Request 모듈을 사용하여, 간단하게 HTTP API 를 사용할 수 있습니다.
requests 모듈을 사용하여 간단하게 get, post 동작을 수행할 수 있습니다.
HTTP Protocol 로 API 요청할 때 기본적으로 필요한 정보를 먼저 정리하겠습니다.
[ Request ]
1. URL
: 요청할 URL 입니다. HTTP(S) 정보와, IP 혹은 DDNS 주소, 포트, 요청 URL
- http://192.168.10.31:8080/request_url
<http or https>://<IP>:<port></request url>
2. auth
: auth 는 Basic, Digest 를 주로 사용합니다.
request 모듈에서 ID/PW 를 통해 알아서 인증을 해줍니다.
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
basic_auth = HTTPBasicAuth('admin', '1234')
digest_auth = HTTPDigestAuth('admin', '1234')
3. timeout
: 서버가 실행되어 있지 않거나, 또는 오동작으로 정상 응답을 주지 않을 수 있습니다.
해당 Parameter는 최대 Server 의 응답을 기다리는 시간입니다.
4. Header
: POST 을 통해 데이터를 전송할 때, Header 에 Parameter Name:Value 로 값을 넣을 수 있습니다.
< GET 예제 >
import requests
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
auth = HTTPDigestAuth(username, password)
try:
r = requests.get('http://192.168.10.90:8080/device/info', auth=auth, timeout=5, verify=False)
# Timeout 처리
except requests.exceptions.Timeout:
return 408
# InterError 및 기타에러 처리
except Exception as e:
print(e)
return 500
print(r.status_code)
print(r.text)
< POST 예제 >
import json
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
import requests
auth = HTTPBasicAuth(username, password)
event_str = 'enter:preset1'
try:
r = requests.post('http://192.168.10.12:8080/pushEvent', auth=auth, \
headers = {'Content-Type': 'text/xml; charset=utf-8;', \
data=event_str.encode('UTF-8'), timeout=5, verify=False)
except requests.exceptions.Timeout:
return 408
except Exception as e:
print(e)
return 500
print(r.status_code)
print(r.text)
위의 예제와 같이 requests 모듈을 활용한 HTTP Protocol API 를 사용할 수 있습니다.
그럼 20000.
python socket send, recv, http(GET, POST), multipart/mixed data (2) | 2020.06.03 |
---|---|
python datetime to utc timestamp (2) | 2020.04.16 |
python datetime to OLE Automation date (0) | 2020.04.16 |
파이썬 딕셔너리 json, python dictionary json 만들기, python json, json string (0) | 2020.02.26 |
python XML, python ElementTree, python XML String 만들기, tostring (0) | 2020.02.24 |