我有一个post请求,我需要发送x-www-form-urlencoded keyValue对参数,content-type应该是x-www-form-urlencoded。
在编码之前,我已经在postman中成功尝试过,只是添加了Header“Content-Type=application/x-www-form-urlencoded”和x-www-form-urlencoded body。
下面是我的代码:`
RestAssured.baseURI="****"
RequestSpecification request = RestAssured.given().config(RestAssured.config()
.encoderConfig(EncoderConfig.encoderConfig()
.encodeContentTypeAs("x-www-form-urlencoded",
ContentType.URLENC)))
.contentType(ContentType.URLENC.withCharset("UTF-8"))
.formParam("grant_type", *)
.formParam("code", *)
.formParam("client_id",*)
.when().log().all()
.then().log().all().request()
request.post("/oauth2/token")`
我猜放心张贴为formParam不是“x-www-form-urlencoded”?这是放心日志:”
Request method: POST
Request URI: ***
Proxy: <none>
Request params: <none>
Query params: <none>
Form params: grant_type=***
code=***
client_id=***
Path params: <none>
Headers: Accept=image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap
Content-Type=application/x-www-form-urlencoded; charset=UTF-8
Cookies: <none>
Multiparts: <none>
Body: <none>
HTTP/1.1 405 Method Not Allowed
Content-Length: 61
Date: Tue, 30 Jan 2018 06:59:20 GMT
X-Correlationid: 5d155b6f-0d85-4775-5f50-82c397e5b44b
X-Smp-Log-Correlation-Id: 5d155b6f-0d85-4775-5f50-82c397e5b44b
X-Vcap-Request-Id: 5d155b6f-0d85-4775-5f50-82c397e5b44b
Only support Content-Type:application/x-www-form-urlencoded
“这个问题让我发疯了好几天。请让我知道是否有任何其他方式发送x-www-form-urlencoded参数或代码中需要的一些更新。
多谢了!
5条答案
按热度按时间omqzjyyz1#
gdx19jrr2#
如果你需要在请求体中包含参数:
URL中参数的大小写:
标头中参数的情况(也可以使用标头对象io.restassured.http.Header):
顺便说一句,使用static给予()来避免重复配置
6jjcrrmo3#
这个方法对我很有效
mwecs4sa4#
使用RA EncoderConfig对content-type x-www-form-urlencoded的内容类型进行编码。另外,将有效负载作为表单参数发布
wdebmtf25#
我遇到了同样的问题,终于找到了解决办法:
了解问题:Rest Assured会自动在内容类型后串联字符集,即使您没有指定字符集。
也就是说,如果您将Content-Type设置为
application/x-www-form-urlencoded
,它将自动为其设置默认字符集,并且您的日志将显示:Content-Type=application/x-www-form-urlencoded; charset=ISO-8859-1
或其他字符集。我的问题是,我需要内容类型没有任何字符集,否则它不会被接受并返回状态代码400。
解决方案是确保您发送的内容类型没有任何字符集。
如何用途:在设置内容类型之前,添加此行:
将确保没有字符集将被追加到您的内容类型。
然后设置header: