【发布时间】:2016-03-26 17:24:32
【问题描述】:
我对 Python 完全陌生。我正在使用 GitLab,它提供了系统挂钩功能,其中我可以指定一个 URL,它将以 JSON POST 数据的形式发送事件详细信息。当我创建一个 RequestBin URL 并在 GitLab 的系统挂钩中提供该 URL 时,如果发生任何事件(例如项目创建),它会发送事件详细信息,我可以在 RequestBin 中看到相同的内容,如下面的快照所示。
现在,我想在某个变量中获取此 JSON 数据,以便我可以根据需要对其进行处理,但我不确定如何读取该数据。
我看过一些解释如何读取 JSON 数据的帖子,但正如您在下面的屏幕截图中看到的那样,FORM/POST PARAMETERS 显示为 None。它是包含所有细节的原始正文(JSON 格式):
我尝试使用 Java 读取数据,它可以与下面显示的代码一起使用:
String recv;
String recvbuff="";
BufferedReader buffread = new BufferedReader(new InputStreamReader(request.getInputStream()));
while ((recv = buffread.readLine()) != null)
recvbuff += recv;
buffread.close();
System.out.println(recvbuff);
out.println(recvbuff);
在 Python 中寻找类似的东西。
【问题讨论】:
-
所以如果我理解正确,您正在寻找一种方法来设置一个简单的 Python 服务器来处理一些 JSON-POST 请求?我建议使用 CherryPy,很容易设置一些接受 JSON 调用的函数 docs.cherrypy.org/en/latest/basics.html#dealing-with-json
-
CherryPy 是 Apacher 服务器的替代品吗?此外,请求是 JSON 格式,但它是作为原始数据发送的,所以我不确定你的建议是否可行。
-
投票结束,因为您没有具体问题
-
@AlastairMcCormack:为什么没有具体问题?它写在主题本身中,即从 POST 请求接收原始数据。问题是我不知道如何在 Python 中接受数据。我是使用 Tomcat + JSP + jq + shell 完成的,但这看起来不是一个好方法,所以我想尝试使用 Python。
-
Python 不处理 HTTP 请求,实际上,框架/模块/库可以。你已经用一些不完整的 Flask 代码更新了你的问题,但没有显示你是如何测试它的。你的问题太宽泛、太随意、太分散、太模糊,无法写出好的答案。作为与您一样享有盛誉的人,您应该已经提出了很好的问题,但为了他人和您的利益,请参阅:stackoverflow.com/help/how-to-ask