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();
不过我相信应该有更合适的方法来解决这个问题。
我预计此请求在服务器上会出现错误,我会将其作为具有预期响应的字符串进行比较。
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();
不过我相信应该有更合适的方法来解决这个问题。