如何放心发布x-www-urlencode请求

时间:2018-01-30 06:51:34

标签: postman rest-assured

我有一个帖子请求,我需要发送x-www-form-urlencoded keyValue对参数,内容类型应该是x-www-form-urlencoded。

在编码之前,我已经成功地在邮递员中尝试过,只需添加标题" 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参数或代码中需要的一些更新。

非常感谢!

2 个答案:

答案 0 :(得分:0)

如果您需要在身体中发送带有参数的请求:

String body = String.format("grant_type=%s&code=%s&clientid=%s", grantType, code, clientId);
Response response = given().with().
header("Content-Type", "application/x-www-form-urlencoded").
body(body).
post("/oauth2/token");

URL中的params案例:

Response response = given().with().
header("Content-Type", "application/x-www-form-urlencoded").
post("/oauth2/token?grant_type={type}&code={code}&clientid={id}");

标题中的params的情况(也可能使用Header对象io.restassured.http.Header):

Response response = given().with().
header("Content-Type", "application/x-www-form-urlencoded").
header("grant_type", type).
header("code", code).
header("clientid", id).
post("/oauth2/token");

BTW使用静态give()表示不重复配置

public static RequestSpecification given() {
RestAssured.config = RestAssured.config().
...;
return given().baseUrl(BASE_URL).contentType(ContentType.URLENC);
}

答案 1 :(得分:0)

使用RA EncoderConfig对内容类型x-www-form-urlencoded的内容类型进行编码。另外,将有效载荷作为表单参数发布

RequestSpecBuilder.setConfig(RestAssured.config().sslConfig(SSLConfig.sslConfig().relaxedHTTPSValidation())
                .encoderConfig(EncoderConfig.encoderConfig()
                        .encodeContentTypeAs("x-www-form-urlencoded",
                                ContentType.URLENC)))
                .setContentType("application/x-www-form-urlencoded; charset=UTF-8");