簡體   English   中英

獲取“java.lang.IllegalArgumentException:不知道如何將 XXX 編碼為字節流。”

[英]Getting “java.lang.IllegalArgumentException: Don't know how to encode XXX as a byte stream.”

我想從字符串中提取 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");

在最后一行中,我將多個標頭作為哈希圖傳遞。

我收到以下錯誤:

 java.lang.IllegalArgumentException: Don't know how to encode {"queryString": "Pearson AND unscrubbed:false"} as a byte stream. Please use EncoderConfig (EncoderConfig#encodeContentTypeAs) to specify how to serialize data for this content-type. For example: "given().config(RestAssured.config().encoderConfig(encoderConfig().encodeContentTypeAs("application json", ContentType.TEXT))). .." at com.jayway.restassured.internal.http.EncoderRegistry.encodeStream(EncoderRegistry.java:129)

我似乎 RestAssured 不夠聰明,無法理解帶有字符集的內容類型 JSON。 簡單的解決方案是更換

setContentType("application json;charset = UTF-8");

使用枚舉io.restassured.http.ContentType

setContentType(ContentType.JSON)

嘗試使用javajson.jar而不是restassured 我嘗試使用下面給出的restassured api:

Response resp = given().config(RestAssured.config().encoderConfig(((Object) encoderConfig()).encodeContentTypeAs("application json", APIBody)));

但是在 jar 文件配置中缺少/未定義以下方法:

未定義 RestAssured encodeContentTypeAs 類型的 config() 方法

方法 encodeContentTypeAs(String, String) 未定義對象類型

嘗試以下面的方式給予

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

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM