RestAssured: '没有在响应中指定支持的 Content-Type。对于支持的内容类型,Content-Type 是 'text/html;charset=ISO-8859-1''

RestAssured: 'no supported Content-Type was specified in response. Content-Type was 'text/html;charset=ISO-8859-1'' for content type that has support

我预计此请求在服务器上会出现错误,我会将其作为具有预期响应的字符串进行比较。

return given()
                .queryParams(incorrectParams)
                .when()
                .put("https://example.com/endpoint")
                .then()
                .statusCode(500)
                .extract().body().as(String.class)

问题是 RestAssured 在执行此操作时给我一个错误:java.lang.IllegalStateException:无法解析对象,因为在响应中未指定支持的 Content-Type。内容类型为 'text/html;charset=ISO-8859-1'.

我已经在设置中添加了解码器,但没有用。

RestAssured.config().decoderConfig(new DecoderConfig(ContentType.HTML.withCharset(Charset.forName("ISO-8859-1"))));

错误情况下服务器返回的类型为:Content-Type: text/html;charset=ISO-8859-1

我还在调试器中看到默认解码器应该支持这样的响应。

还有一件事要提 - 如果在 queryParams 中使用正确的参数发送请求,则返回 Content-Type: application/json 并且对于正面测试用例一切正常。

如何正确处理(提取)这样的响应? Rest Assured端应该设置什么?

放心版本是4.4.0

只是为了将响应保存为字符串,你可以这样做。

.then()
.statusCode(500)
.extract().asString()

帮助我正确解码的是

                .extract().body().asPrettyString();

不过我相信应该有更合适的方法来解决这个问题。