반응형
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개의 답변을 받기 위해 무엇을 잘못했는지 잘 모르겠습니다.
params
GET 스타일의 URL 파라미터용입니다.data
POST 스타일의 바디 정보용입니다.두 가지 유형의 정보를 모두 요청으로 제공하는 것은 완전히 합법적이며, 요청도 마찬가지이지만 URL 파라미터를 이미 URL로 인코딩했습니다.
raw 투고에는 JSON 데이터가 포함되어 있습니다. requests
JSON 인코딩을 처리할 수 있습니다.이것에 의해, 올바른 설정이 됩니다.Content-Type
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
encoded 결과를 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
반응형
'it-source' 카테고리의 다른 글
PHP 경고: POST Content-Length 8978294 바이트가 행 0의 알 수 없는 8388608 바이트의 제한을 초과합니다. (0) | 2022.10.31 |
---|---|
해질녘에 기다리고 있어Unsecure.park(네이티브 메서드) (0) | 2022.10.31 |
Java 로깅 vs Log4J (0) | 2022.10.31 |
사전의 키를 인쇄하는 방법 (0) | 2022.10.31 |
MySQL 데이터베이스가 XAMPP Manager-osx에서 시작되지 않음 (0) | 2022.10.30 |