我需要发送一个视频文件和JSON对象在休息放心后调用。
结构如下:
{“sample”:{
“name”:“sample-name”,
“kind”:“上传”,
“video_file”:多部分文件在此
所以我喜欢下面的
代码:
given()
.header("Accept", "application/json")
.header(auth)
.config(rConfig)
.body(body)
.multiPart("sample[video_file]", new File("path"), "video/mp4")
.formParam("sample[name]", "Video Upload")
.formParam("sample[kind]", "upload")
.log().all().
expect()
.statusCode(expectedStatusCode)
.post(url);
在Rest Assured中使用multipart时,我无法使用application/JSON。我显式地将值硬编码为形式param并以multipart发送媒体文件,现在它工作正常。
如何在一个内部对象中发送所有表单参数数据。
3条答案
按热度按时间ukdjmx9f1#
你的方法不标准。
你不能有一个多部分的请求和一个JSON体,你需要在两种方法中选择一种:
multipart/form-data
或application/json
请求。标准的方法是使用
multipart/form-data
,在这种情况下,您将拥有一个包含序列化JSON负载的 json 参数的multipart请求,以及一个包含multipart文件的 file 参数。但这涉及到更改服务器端逻辑。
如果您无法更改服务器端逻辑,并且希望使用
application/json
方法,则需要将文件序列化(作为字节数组或base64字符串)以在JSON负载中设置为 video_file。v440hwme2#
您可以使用RequestSpecBuilder来执行此操作。它支持所有的请求参数,您可以轻松地创建多部分请求。
示例代码取自https://github.com/rest-assured/rest-assured/wiki/Usage
t2a7ltrp3#
感谢您的回复rohit.我是为了用formParams处理内部对象而发布这个问题的。我已经为formParams创建了一个哈希Map。因为formParams的方法放心可以接受Hash map。
表单参数Map创建:
最后将Map发送到Rest Assured post call函数