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


150

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

답변:


261

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)

12

다음과 같이 데이터를 설정하십시오.

data ={"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}

5
자신의 데이터와 다른 점을 간단히 설명하십시오
Ayyan Khan

8

응답을 값에 할당하고 그 속성을 테스트하십시오. 이것들은 당신에게 유용한 것을 알려줄 것입니다.

response = requests.post(url,params=data,headers=headers)
response.status_code
response.text
  • status_code는 물론 이전에 주어진 코드를 다시 확인해야합니다.

이전에 시도했지만 요청 ID가 구문 적으로 잘못되었다고 말합니다.
slysid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.