我正在使用 Spring Boot 来模拟我们的一项更复杂的服务。虽然所有标准情况都很容易完成,但有一个情况给我带来了一些麻烦。理论上,我正在模拟的应用程序有可能崩溃并关闭连接而不发送响应。
我尝试了几种方法来在 Spring Boot 中实现这一目标,但实际上并没有让我的模拟崩溃。这包括抛出进入异常处理程序的异常,并且从那里无法正确响应,但是到目前为止,要么由 spring 生成错误响应,要么以某种方式解析为空响应。
是否可以选择在 @Conroller
中使用方法来导致关闭连接而没有任何响应?
最佳答案
关闭连接是HTTP规范和协议(protocol)的责任。您无法以编程方式强制执行它。 HTTP 客户端和 HTTP 服务器之间正在进行连接协商。
虽然您可以尝试中断当前线程或设置 header Connection: close,但您不应该搞乱连接和请求处理的这一部分。您的 HTTP 服务器可能会开始出现异常行为。
尝试不同的方法。如果您需要模拟关闭的连接,您可以以编程方式分配一个新的 HTTP 服务器实例,向其发送请求,暂停请求处理并终止实例(这是一个单独的线程)。我相信您会找到更好的方法,只需从不同的角度找到问题的根源即可。
关于java - 防止 Controller 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043679/