【发布时间】:2019-03-06 09:06:43
【问题描述】:
我正在测试一个带有如下 URL 的 HTTP Post 请求:
https://myurl.com/api/logs/%2Fvar%2Flog%2Fmessages?Api-Token=12332429nmdsafs
我禁用了 URL 编码,这里是我的发帖请求:
RestAssured.given()
.contentType(JSON)
.log()
.all()
.urlEncodingEnabled(false)
.baseUri(RestAssured.baseURI)
.basePath(url)
.pathParam(LOG_PATH_PARAM_NAME, urlEncodeString(requireNonNull(logPath)))
.body(myJsonBody)
.when()
.post("/logs/{logPath}")
.then()
.statusCode(OK.getStatusCode());
我也试过这样:
RestAssured.given()
.contentType(JSON)
.log()
.all()
.urlEncodingEnabled(false)
.baseUri(RestAssured.baseURI)
.basePath(url)
.body(myJsonBody)
.when()
.post("/logs/" + urlEncodeString(requireNonNull(logPath)))
.then()
.statusCode(OK.getStatusCode());
这里是 urlEncodeString 方法:
private static String urlEncodeString(String value) throws UnsupportedEncodingException {
return URLEncoder.encode(value, StandardCharsets.UTF_8.name()).replaceAll("\\+", "%20");
}
现在的问题是我上面提到的 URL 被编码为以下内容:
https://myurl.com/api/logs/var/log/messages?Api-Token=12332429nmdsafs
有人知道这里有什么问题吗?或者知道解决方法? 我已经尝试过双重逃脱路径。
编辑:
我刚刚发现禁用 URL 编码仅适用于 URL 参数。
【问题讨论】:
标签: java url url-encoding rest-assured