[python] param 데이터가 포함 된 Python 요청 게시물

이것은 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 응답을 얻기 위해 내가 잘못 게시 한 것이 확실하지 않습니다.



답변

paramsGET 스타일 URL 매개 변수 data용이며 POST 스타일 본문 정보 용입니다. 두 가지를 모두 제공하는 것이 합법적입니다요청에 가지 유형의 정보를 이며 요청도 마찬가지이지만 URL 매개 변수를 이미 URL로 인코딩했습니다.

원시 게시물에는 JSON 데이터 가 포함되어 있습니다 . requestsJSON 인코딩을 처리 할 수 ​​있으며 올바른 설정 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는 물론 이전에 주어진 코드를 다시 확인해야합니다.

답변