我想通过spring boot rest controller接收GitLab webhook消息,但我遇到了webhook消息的空POST主体问题。
我的测试RestController非常简单:
@SpringBootApplication
@RestController
@RequestMapping("/gitlab/project")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@PostMapping("/ok")
public String working() {
return "ok";
}
@PostMapping("/fails0")
public String fails(@RequestBody String message) {
return "never reaches this line";
}
@PostMapping("/fails1")
public String fails(@RequestBody JsonNode message) {
return "never reaches this line";
}
}
当我在root logger上启用TRACE日志记录级别时,来自GitLab的传入请求如下所示:
[POST /gitlab/project/fails0 HTTP/1.1
Content-Type: application/json
X-Gitlab-Event: Push Hook
Connection: close
Host: 128.71.128.109:8080
Content-Length: 2065
]
3秒后超时GitLab失败测试消息,异常:
Hook execution failed: Net::ReadTimeout
经过更长的超时后,Spring因此异常而失败:
org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is java.net.SocketTimeoutException
如果我没有尝试接收POST有效负载,请求和响应会正确执行,但当然,这不是我想要的。
有人能告诉我问题在哪里吗?
答案 0 :(得分:0)
代码正确。问题可能出在网络上。如果使用泊坞窗,请不要使用localhost:8080。使用本地计算机或dns的IP。