[英]How to prevent getting java.lang.IllegalArgumentException “without reason”?
[英]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.