python发送json格式报文,如何使用Python请求发布JSON数据?

I need to POST a JSON from a client to a server. I'm using Python 2.7.1 and simplejson. The client is using Requests. The server is CherryPy. I can GET a hard-coded JSON from the server (code not shown), but when I try to POST a JSON to the server, I get "400 Bad Request".

Here is my client code:

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)

Here is the server code.

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

Any ideas?

解决方案

Starting with Requests version 2.4.2, you can use the json= parameter (which takes a dictionary) instead of data= (which takes a string) in the call:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值