当前位置: 首页 > 知识库问答 >
问题:

RestAssured:'响应中未指定支持的内容类型。内容类型为“文本/html”;charset=ISO-8859-1“”,用于支持的内容类型

陶柏
2023-03-14

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

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

问题是,在执行此命令时,RestAsure会给我一个错误:java.lang.IllegalStateExcture:无法解析对象,因为响应中没有指定支持的Content-Type。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

另外,我在debbuger中看到,默认解码器应该支持这样的响应。

还有一件事需要提及——如果请求在queryParams中使用正确的参数发送,则返回内容类型:application/json,对于阳性测试用例,一切都正常。

如何正确处理(提取)这样的回答?在放心的一面应该设置什么?

放心的版本是4.4.0

共有2个答案

荣晨朗
2023-03-14

帮助我正确解码的是

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

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

东门航
2023-03-14

只需将响应保存为字符串,就可以这样做。

.then()
.statusCode(500)
.extract().asString()
 类似资料: