如何发送JSON到我的python脚本

How to send JSON to my python script?

本文关键字:python 脚本 我的 何发送 JSON      更新时间:2023-09-26

目前我正在使用这个函数从chrome扩展发送我的JSON。这是javascript发送数据的客户端代码。

function callPython(){
    var url  = 'http://AWS_IPNUMBER/';
    var data = {'bob':'foo','paul':'dog'};
    $.ajax({
        url: url,
        type: 'POST',
        contentType:'application/json',
        data: JSON.stringify(data),
        dataType:'json',
        success: function(data){
            var jsonObj = $.parseJSON(data);
            alert(jsonObj.encPassword);
        },
        failure: function(errorMsg) {
            alert(errorMsg);
        }
    });
}

这是Python的服务器代码:

s = socket()
s.bind(('', 80))
s.listen(4)
ns, na = s.accept()
while True:
    try:
        data = ns.recv(8192)
    except:
        ns.close()
        s.close()
        break
    data = json.loads(data)
    print data

问题是,虽然它在监听,datadata = ns.recv(8192)是空的。data = json.loads(data)不工作,因为data是空的。为什么会这样?我认为这可能是我在AWS上的安全组的问题,但如果我去http://AWS_IPNUMBER/,我在运行python脚本时从浏览器获得标题。

你可能会有更好的运气,像龙卷风或django这样的好框架。

我这么说是因为在你的代码中,你试图用json.loads解析http POST。HTTP并没有那么简单。在到达正文之前,您需要处理请求和头,这可以分散到多个数据包中。当您可以从已建立的项目中设置符合标准的服务器时,为什么要重新发明轮子呢?

$。ajax函数将放置的是一个完整的HTTP请求,json.loads()无法理解。在这种情况下,您需要实例化一个HTTP服务器,它将处理HTTP请求,然后使用json.loads()处理HTTP有效负载。