gpt4 book ai didi

java - Jersey 2.0 内容长度未设置

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:25 26 4
gpt4 key购买 nike

我正在尝试发布到需要使用以下代码设置 Content-Length header 的 Web 服务:

// EDIT: added apache connector code
ClientConfig clientConfig = new ClientConfig();
ApacheConnector apache = new ApacheConnector(clientConfig);

// setup client to log requests and responses and their entities
client.register(new LoggingFilter(Logger.getLogger("com.example.app"), true));

Part part = new Part("123");
WebTarget target = client.target("https://api.thing.com/v1.0/thing/{thingId}");
Response jsonResponse = target.resolveTemplate("thingId", "abcdefg")
.request(MediaType.APPLICATION_JSON)
.header(HttpHeaders.AUTHORIZATION, "anauthcodehere")
.post(Entity.json(part));

来自发行说明 https://java.net/jira/browse/JERSEY-1617和 Jersey 2.0 文档 https://jersey.java.net/documentation/latest/message-body-workers.html这意味着 Content-Length 是自动设置的。但是,我从服务器收到 411 响应代码,表明请求中不存在 Content-Length。

有人知道获取 Content-Length header 集的最佳方法吗?

我已通过设置记录器验证请求中未生成 Content-Length header 。

谢谢。

最佳答案

我用 Jersey Client 2.2 和 Netcat 进行了快速测试,结果显示 Jersey 正在发送 Content-Length header ,即使 LoggingFilter 没有报告它。

为了进行这个测试,我首先在一个 shell 中运行了 netcat。

nc -l 8090

然后我在另一个 shell 中执行了以下 Jersey 代码。

Response response = ClientBuilder.newClient()
.register(new LoggingFilter(Logger.getLogger("com.example.app"), true))
.target("http://localhost:8090/test")
.request()
.post(Entity.json(IOUtils.toInputStream("{key:\"value\"}")));

运行此代码后,将记录以下行。

INFO: 1 * LoggingFilter - Request received on thread main
1 > POST http://localhost:8090/test
1 > Content-Type: application/json
{key:"value"}

但是,netcat 会在消息中报告多个 header 。

POST /test HTTP/1.1
Content-Type: application/json
User-Agent: Jersey/2.0 (HttpUrlConnection 1.7.0_17)
Host: localhost:8090
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 13

{key:"value"}

我在使用 Java6 和 Java7 的 OSX 上运行了这个测试,结果相同。我也在 Jersey 2.0 中运行了测试,结果相似。

关于java - Jersey 2.0 内容长度未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157218/

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