【问题标题】:REST Assured - How do I instigate "Transfer-Encoding: chunked" - I currently get apache error "Transfer-encoding header already present"REST Assured - 我如何发起“Transfer-Encoding:chunked” - 我目前收到 apache 错误“Transfer-encoding 标头已存在”
【发布时间】:2015-11-13 13:43:39
【问题描述】:

我对 Java 还是很陌生,而且对 REST/REST 有信心。 我正在尝试使用“Transfer-Encoding:chunked”集(通过标头)创建一个 POST 请求,但出现异常“org.apache.http.ProtocolException:Transfer-encoding 标头已存在”。

我使用的代码类似于以下...... @测试 …… 给定() .headers(使用设置所需标头的方法,包括“传输编码”) .body("testdata".getBytes()) .contentType(MediaType.APPLICATION_OCTET_STREAM) .log().all() 。预计() .statusCode(HttpStatus.SC_OK) .post();

但我得到了异常“org.apache.http.ProtocolException: Transfer-encoding header already present”。

有谁知道我为什么会收到异常/我该如何解决它? 提前致谢。

【问题讨论】:

  • 您能否提供一个可运行的示例来说明问题? Apache 可能会在后台自行设置此标头。列出标题并验证发生了什么。
  • 我发现完全一样的问题放心。使用 curl 可以正常工作。

标签: java apache rest transfer-encoding


【解决方案1】:

昨天我可以使用八进制流

given().urlEncodingEnabled(false)
            .config(RestAssured.config()
                    .encoderConfig(new EncoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false)
                            .encodeContentTypeAs("application/octet-stream", ContentType.TEXT)))

您不需要添加传输编码,因为 REST Assure 框架会为您完成。

您需要 urlEncodingEnabled 因为它自动编码,同时需要 encodeContentTypeAs 作为使用序列化程序的内部框架。

这可能会帮助其他可能在未来遇到类似问题的人。

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2013-10-20
    • 2011-11-09
    • 2017-10-03
    • 2020-04-17
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多