1

我有一个服务器,它需要能够接受 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模块代码:

我必须发送的数据是推文列表。数据本身是从某个返回推文列表的服务器获取的。对于获取推文,我使用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 的访问权限。

4

2 回答 2

5

对于application/jsonPOST,只需访问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']
于 2013-02-15T12:54:09.893 回答
0

试试这个...

//樱桃

import json

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

//javascript

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));
}

希望这可以帮助。

安德鲁

于 2013-02-15T13:15:59.450 回答