我是 resttemplate 的新手,以及它是如何由 Apache http 类支持的。所以起初我认为我需要做的就是手动创建带有 Expect: 100 Continue 的 http 标头,以便开始使用该功能实现 PUT 方法。在我的情况下,与我进行对话的服务器正确响应,但我的应用程序从未看到 100-Continue 响应,因为 100-Continue 被忽略,例如:[org.apache.commons.httpclient.HttpMethodBase] - <'丢弃意外响应:HTTP/1.1 100 Continue>。Wireshark 确认我得到了 100 Continue。
在阅读了一些内容后,我现在明白了,我必须在某个地方设置 PUT 方法的默认行为以使用 Expect: 100-Continue 标头……而且我开始认为它在任何 Springsource 创作的类中都没有。据我所知,相关的 Apache 抽象类是:org.apache.commons.httpclient.methods.ExpectContinueMethod,它有一个名为 org.apache.commons.httpclient.methods.PutMethod 的子类,无论如何都有一个 setter在所有 PUT 请求中使用 Expect: 100-CONTINUE。
所以这导致现在有 2 个问题,现在是 1。
如何设置此功能,以便在与服务器的对话中使用 100-CONTINUE?我一直在 Springsource 文档中搜索,我看到了 HttpClientParams 的设置位置以及 CommonsClientHttpRequestFactory 的设置方式,但是当 resttemplate 作用于 PUT 请求时,我不知道在哪里或如何设置 ExpectContinueMethod 的使用。我开始认为在任何 Springsource 类或包中都不可能......我觉得 resttemplate 太高级了,可以这么说。
也许我必须导入许多 Apache 包来实例化它们并指定使用 ExpectContinue 功能,并以某种方式确保 resttemplate 和其他 Springsource 类使用它们(如果这甚至可能或有意义的话)。今天这超出了我的想象,但我对需要做什么有一个模糊的概念。即使是真的,这是否意味着对于任何应用程序,我必须选择永远对所有 PUT 请求使用 100-Continue 标头?我不能让一些 PUT 请求使用它,而其他请求不取决于身体的大小?这将是可怕的。
即使指向正确方向的指针也会受到赞赏。
-保罗