프로그래밍 언어/Python

Python 요청으로 JSON 데이터를 게시하는 방법

Rateye 2021. 7. 19. 10:18
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
반응형