通过请求模块发送JSON并使用bottle.py和cherrypy捕获它

时间:2013-02-15 12:48:54

标签: python json cherrypy bottle python-requests

我有一台服务器需要能够接受JSON然后处理它然后再发送JSON。我服务器端的代码使用 bottle.py和cherrypy 。关注的路线如下:

@route ('/tagTweets', method='POST')
def tagTweets():

    response.content_type = 'application/json'

    # here I need to be able to parse JSON send along in this request.

要请求此页面并测试功能,我正在使用请求模块代码:

我必须发送的数据是推文列表。数据本身是从某个服务器获取的,该服务器返回推文列表。对于获取推文,我使用requests.get然后使用响应对象的json方法。这工作正常。现在我对此进行了一些处理后,我必须发送这个json,就像我获取到另一台服务器一样。

url     = "http://localhost:8080/tagTweets"
data    = {'sender': 'Alice', 'receiver': 'Bob', 'message': 'We did it!'}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r       = requests.post(url, data=json.dumps(data), headers=headers)

我无法弄清楚如何获取对请求的json发送的访问权限。

2 个答案:

答案 0 :(得分:5)

对于application/json POST,只需访问request.json

@route ('/tagTweets', method='POST')
def tagTweets():
     response.content_type = 'application/json'
     sender = request.json['sender']
     receiver = request.json['receiver']
     message = request.json['message']

答案 1 :(得分:0)

试一试......

// CherryPy的

import json

@route ('/tagTweets', method='POST')
def tagTweets(UpdatedData=None):
    Data = json.loads(UpdatedData)

// java描述

function SendJson()
{
    var JSONObject = { changes: [] };
    JSONObject.changes.push({"sender": "Alice", "receiver": "Bob" }
            );

    // code for IE7+, Firefox, Chrome, Opera, Safari
    if(window.XMLHttpRequest)
        xmlhttp=new XMLHttpRequest();
    else// code for IE6, IE5
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            alert(xmlhttp.responseText);
        }
    }

    xmlhttp.open("POST","/tagTweets", true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send(JSON.stringify(JSONObject));
}

希望这有帮助。

安德鲁