gpt4 book ai didi

java - 如何在 Java 中处理 Github Webhook?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:13 24 4
gpt4 key购买 nike

简单的问题。

在 Github 上注册了有效负载 URL:使用 ngrok.com ( ngrok ) 链接,如 Github 文档中解释的 Webhooks:Creating Webhooks

ngrok definition: “I want to securely expose a local web server to the internet and capture all traffic for detailed inspection and replay.”


当我在正确的有效负载 URL 上从 github 发送带有有效负载的 POST 请求时,响应代码为 200,我如何处理该请求/响应并在 java 中获取有效负载 (JSON)?用servlet还是?
我不知道从哪里开始。试图搜索但没有搜索 Java :(

  1. 如果我输入 ngrok.com/something,Eclipse 控制台抛出:
    [WARN] 404 - POST/pas (127.0.0.1) 1368 字节
    请求 header
    主持人:....ngrok.com
    X-真实IP:192 ....
    X-Forwarded-Proto:http
    连接:关闭
    内容长度:5759
    接受: */*
    用户代理:GitHub-Hookshot/e9dfd89
    X-GitHub 事件:ping
    X-GitHub-交付:c5493000-b67e-11e4-8199-8b09d3d66948
    内容类型:application/json
    X-Hub-签名:sha1=b2947ce6a6de23f4274831523bae375d64e20021
    响应头
    连接:关闭
    内容类型:text/html;charset=ISO-8859-1
    缓存控制:必须重新验证、无缓存、无存储
    内容长度:1368
  2. 如果我输入正确的 URL,状态为 200。Github Webhooks/Manage webhook 上的响应:
    Accept-Ranges: bytes
    连接:保持 Activity 状态
    内容长度:1521
    内容类型:文本/html
    日期:2015 年 2 月 17 日星期二 10:17:46 GMT
    最后修改时间:2015 年 2 月 12 日星期四 09:06:18 GMT
    服务器:nginx/1.6.2

所以问题实际上是“如何处理该负载?”

  • 在文档中他们使用 Sinatra,这是一个很大的 ?对我来说。

Sinatra 代码如下所示:

需要“西纳特拉”
需要“json”
发布“/payload”做
push = JSON.parse(request.body.read)
放“我有一些 JSON:#{push.inspect}”
结束

这是一个新问题,如果这是个愚蠢的问题,我们深表歉意。

最佳答案

已解决,我使用 HttpServlet doPost 方法来获取请求,然后从请求中获取 getReader() 并读取行,这样我就可以创建 JSONObject。我的 servlet 在 page/Payload 上,Webhook 在 http://server.com/page/Payload

public class Payload extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
StringBuilder builder = new StringBuilder();
String aux = "";

while ((aux = req.getReader().readLine()) != null) {
builder.append(aux);
}

String text = builder.toString();
try {
JSONObject json = new JSONObject(text);
String teams_url = json.getJSONObject("repository").getString("teams_url");
System.out.println("Teams URL:: "+teams_url);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}

关于java - 如何在 Java 中处理 Github Webhook?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28559645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com