获得;java.lang.IllegalArgumentException:Don';我不知道如何将XXX编码为字节流。”;

获得;java.lang.IllegalArgumentException:Don';我不知道如何将XXX编码为字节流。”;,java,rest-assured,Java,Rest Assured,我想从字符串中提取JSON数据。这是我的密码: String APIBody = "{\"queryString\": \"Pearson AND unscrubbed:false\"}"; RequestSpecBuilder rbuild = new RequestSpecBuilder(); rbuild.setBody(APIBody); rbuild.setContentType("application json;charset = UTF-8"); RequestSpecifica

我想从字符串中提取JSON数据。这是我的密码:

String APIBody = "{\"queryString\": \"Pearson AND unscrubbed:false\"}";
RequestSpecBuilder rbuild = new RequestSpecBuilder();
rbuild.setBody(APIBody);
rbuild.setContentType("application json;charset = UTF-8");
RequestSpecification rSpec = rbuild.build();
Response resp = given().headers(headers).spec(rSpec).when().post("https://content-service.stg-prsn.com/csg/api/v2/search");
在最后一行中,我将作为hashmap传递多个头

我得到以下错误:


尝试使用
javajson.jar
而不是
restassured
。我尝试使用下面给出的
restassed
api:

Response resp = given().config(RestAssured.config().encoderConfig(((Object) encoderConfig()).encodeContentTypeAs("application json", APIBody)));
但是jar文件中缺少/未定义以下方法 配置:

对于重新发布的类型,未定义方法config() 编码内容类型

方法encodeContentTypeAs(String,String)对于 类型对象


试着用下面的方式给予

Response res = given()
                .relaxedHTTPSValidation()
                .body(APIBody)
                .with()
                .contentType("application/json")
                .then()
                .post(url);

谢谢

我觉得restasured不够聪明,无法理解带有字符集的内容类型JSON。简单的解决办法是更换

setContentType("application json;charset = UTF-8");
对于枚举io.restassured.http.ContentType:


不确定这是什么原因,但请尝试更改为
rbuild.setContentType(“application/json;charset=UTF-8”)正确缩进的代码,
setContentType("application json;charset = UTF-8");
setContentType(ContentType.JSON)