728x90
반응형
질문 : Python 요청으로 JSON 데이터를 게시하는 방법은 무엇입니까?
클라이언트에서 서버로 JSON을 게시해야합니다. 저는 Python 2.7.1과 simplejson을 사용하고 있습니다. 클라이언트가 요청을 사용하고 있습니다. 서버는 CherryPy입니다. 서버에서 하드 코딩 된 JSON을 가져올 수 있지만 (코드는 표시되지 않음) JSON을 서버에 POST하려고하면 "400 Bad Request"가 표시됩니다.
내 클라이언트 코드는 다음과 같습니다.
data = {'sender': 'Alice',
'receiver': 'Bob',
'message': 'We did it!'}
data_json = simplejson.dumps(data)
payload = {'json_payload': data_json}
r = requests.post("http://localhost:8080", data=payload)
다음은 서버 코드입니다.
class Root(object):
def __init__(self, content):
self.content = content
print self.content # this works
exposed = True
def GET(self):
cherrypy.response.headers['Content-Type'] = 'application/json'
return simplejson.dumps(self.content)
def POST(self):
self.content = simplejson.loads(cherrypy.request.body.read())
어떤 아이디어?
답변
Requests 버전 2.4.2부터 호출에서 data=
json=
매개 변수 (사전 사용)를 사용할 수 있습니다.
>>> import requests
>>> r = requests.post('http://httpbin.org/post', json={"key": "value"})
>>> r.status_code
200
>>> r.json()
{'args': {},
'data': '{"key": "value"}',
'files': {},
'form': {},
'headers': {'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'close',
'Content-Length': '16',
'Content-Type': 'application/json',
'Host': 'httpbin.org',
'User-Agent': 'python-requests/2.4.3 CPython/3.4.0',
'X-Request-Id': 'xx-xx-xx'},
'json': {'key': 'value'},
'origin': 'x.x.x.x',
'url': 'http://httpbin.org/post'}
출처 : https://stackoverflow.com/questions/9733638/how-to-post-json-data-with-python-requests
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python-입력한 두 값 사이의 값으로 배열 생성하기 (0) | 2021.07.22 |
---|---|
Pandas 데이터 프레임에서 여러 열 선택 (0) | 2021.07.20 |
Python에서 null 개체 참조 (0) | 2021.07.16 |
Python 모듈을 unload (reload) 하는 법 (0) | 2021.07.16 |
브라우저에서 Jupyter / ipython 노트북의 셀 너비를 늘리는 방법 (0) | 2021.07.16 |