【问题标题】:Content-Length-Header not set in Jersey Client request泽西客户端请求中未设置 Content-Length-Header
【发布时间】:2011-08-04 03:17:22
【问题描述】:

我正在使用 Jersey 客户端访问 Web 服务,如下所示:
response = r.accept(MediaType.TEXT_PLAIN_TYPE).header("content-length", 0).post(String.class);
其中 r 是一个网络资源

但是,Web 服务返回 411 - Content-Length is missing。

使用 tcpdump,我发现我能够指定自定义标头,即 .header("myheader", 0) 工作正常。

所以看来 jersey 出于某些原因正在删除 content-length 标头。

有人有什么想法吗?

【问题讨论】:

  • this question 回答了吗?
  • 哇。打算试试看。抱歉,实际上,我确实搜索过,但专注于 java 和 jersey。
  • 不,这不能解决我的问题。传出包中未设置传输编码标头。

标签: java jersey


【解决方案1】:

实际上,我需要对 Restful 网络服务使用空 POST 请求。

如果您指定一个空字符串作为 post 方法的第二个参数,Jersey 将创建值为 0 的 Content-Length 标头。

例如 response = r.accept(MediaType.TEXT_PLAIN_TYPE).post(String.class, "");

【讨论】:

    【解决方案2】:

    通话内容长度由 Jersey 客户端计算,无法设置。 Paul Sandoz - 该项目的知名提交者 - 已回答 a similar question

    问:我认为“Content-Length” 标题没有被自动设置。

    答: Jersey 运行时 [...] 确定内容的长度。

    如果您需要更多信息,请说明您期望将字符串 POST 到具有空大小的资源的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-22
      • 2017-03-09
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多