有没有办法控制 WebTestClient 发送的 Content-Length 标头?

问题描述

我正在针对端点构建一些测试,我想验证端点是否具有状态 411 的正确行为。我一直在使用 org.springframework.test.web.reactive.server.WebTestClient 作为我的端点请求。但是,测试客户端似乎为我添加了 Content-Length 标头。我想尝试发送没有 Content-Length 并且长度设置为一些无效值的请求。

我试过了

return WebTestClient.bindToServer()
        .baseUrl(Env.getBaseUrl())
        .build()
        .method(method)
        .uri(path)
        .headers(hdrs -> hdrs.setAll(headers.toSingleValueMap()))
        .contentLength(-1)
        .body(BodyInserters.fromValue(reqBody))
        .exchange();

但是请求头看起来像这样

> POST http://localhost:8080/myapp/v3/resource/
> WebTestClient-Request-Id: [1]
> Accept: [application/json]
> Content-Type: [application/json]
> Authorization: REDACTED
> Content-Length: [244]

我还尝试省略 Content-Length(作为函数调用和 headers 对象中的标题),在我的 headers 对象中显式设置 Content-Length,并将 Content-Length 设置为各种其他值使用 contentLength 方法。在所有情况下,请求都将传出的 Content-Length 标头设置为 244 字节。

如果需要,我可以使用不同的客户端,尽管我目前使用 WebTestClient 进行大量测试,因此如果可能,我更愿意使用该客户端。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...