이것은 API 호출에 대한 원시 요청입니다.
POST http://192.168.3.45:8080/api/v2/event/log?sessionKey=b299d17b896417a7b18f46544d40adb734240cc2&format=json HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 86
Host: 192.168.3.45:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
{"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}"""
이 요청은 성공 (2xx) 응답을 반환합니다.
이제 다음을 사용 하여이 요청을 게시하려고합니다 requests
.
>>> import requests
>>> headers = {'content-type' : 'application/json'}
>>> data ={"eventType":"AAS_PORTAL_START","data{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}
>>> url = "http://192.168.3.45:8080/api/v2/event/log?sessionKey=9ebbd0b25760557393a43064a92bae539d962103&format=xml&platformId=1"
>>> requests.post(url,params=data,headers=headers)
<Response [400]>
모든 것이 나에게 잘 보이고 400 응답을 얻기 위해 내가 잘못 게시 한 것이 확실하지 않습니다.
답변
params
GET 스타일 URL 매개 변수 data
용이며 POST 스타일 본문 정보 용입니다. 두 가지를 모두 제공하는 것이 합법적입니다요청에 가지 유형의 정보를 이며 요청도 마찬가지이지만 URL 매개 변수를 이미 URL로 인코딩했습니다.
원시 게시물에는 JSON 데이터 가 포함되어 있습니다 . requests
JSON 인코딩을 처리 할 수 있으며 올바른 설정 Content-Header
도 가능합니다. Python 객체를 JSON으로 인코딩하여 json
키워드 인수에 전달하기 만하면됩니다 .
URL 매개 변수도 분리 할 수 있습니다.
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}
그런 다음 다음을 사용하여 데이터를 게시하십시오.
import requests
url = 'http://192.168.3.45:8080/api/v2/event/log'
data = {"eventType": "AAS_PORTAL_START", "data": {"uid": "hfe3hf45huf33545", "aid": "1", "vid": "1"}}
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}
requests.post(url, params=params, json=data)
json
키워드의 새로운 requests
버전 2.4.2; 여전히 이전 버전을 사용해야하는 경우 json
모듈을 사용하여 JSON을 수동으로 인코딩 하고 인코딩 된 결과를 data
키로 게시하십시오 . 이 경우 Content-Type 헤더를 명시 적으로 설정해야합니다.
import requests
import json
headers = {'content-type': 'application/json'}
url = 'http://192.168.3.45:8080/api/v2/event/log'
data = {"eventType": "AAS_PORTAL_START", "data": {"uid": "hfe3hf45huf33545", "aid": "1", "vid": "1"}}
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}
requests.post(url, params=params, data=json.dumps(data), headers=headers)
답변
다음과 같이 데이터를 설정하십시오.
data ={"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}
답변
응답을 값에 할당하고 그 속성을 테스트하십시오. 이것들은 당신에게 유용한 것을 알려줄 것입니다.
response = requests.post(url,params=data,headers=headers)
response.status_code
response.text
- status_code는 물론 이전에 주어진 코드를 다시 확인해야합니다.