it-source

Python Request Post(파라미터 데이터 포함)

criticalcode 2022. 10. 31. 23:58
반응형

Python Request Post(파라미터 데이터 포함)

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 파라미터용입니다.dataPOST 스타일의 바디 정보용입니다.두 가지 유형의 정보를 모두 요청으로 제공하는 것은 완전히 합법적이며, 요청도 마찬가지이지만 URL 파라미터를 이미 URL로 인코딩했습니다.

raw 투고에는 JSON 데이터가 포함되어 있습니다. requestsJSON 인코딩을 처리할 수 있습니다.이것에 의해, 올바른 설정이 됩니다.Content-TypePython 오브젝트를 전달하여 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을 수동으로 인코딩합니다.jsonencoded 결과를 post로 합니다.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는 물론 이전에 받은 코드를 재확인하기만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/15900338/python-request-post-with-param-data

반응형