使用Python Requests库发送POST请求并传递JSON数据

我需要将 JSON 从客户端发送到服务器。我使用的是 Python 2.7.1 和 simplejson。客户端使用 Requests,服务器是 CherryPy。我可以从服务器获取硬编码的 JSON(未显示代码),但当我尝试向服务器 POST JSON 时,我收到“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  # 这行工作正常

    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())

从版本 2.4.2 开始,可以使用 json= 参数(它接受一个字典)而不是 data= 参数(它接受一个字符串)在调用中:

>>> 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'
}

这段代码展示了如何使用 requests 库的 post 方法发送 JSON 数据。通过将数据作为字典传递给 json= 参数,requests 会自动将其转换为 JSON 格式,并设置正确的 Content-Type 头为 application/json。这使得服务器能够正确解析接收到的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李星星BruceL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值