我有一个cURL,它接受文件校验和和xml以及多个标头,以便将图像上传到服务器。 我对RestAssured不太熟悉,所以我的问题是; 如何在RestAssured中表示-F cURL值?
`curl -s -w "\nHTTP %{http_code}\n" -X POST ${mediaUrl}/api/user/${LCID}/repository/${REPO_NAME}/file?conflictSolve=copy \
-H "Accept: application/vnd.******.dv-1.19+xml" \
-H "Content-Type: multipart/form-data" \
-H "Authorization: *** token=\"${TOKEN}\"; authVersion=\"1.0\"" \
-H "x-******-***: ${TOKEN}" \
-H "X-Client-Identifier: TEST" \
-H "X-Client-Platform: CURL" \
-H "x-ingest-tag:RI" \
-F "files=@${XML};type=application/vnd.******.dv-1.19+xml" \
-F "${checksum}=@${file};type=${mimeType}"`
目前,我仅使用标题。
Response response = given()
.log().all()
.spec(RestUtilities.get**RequestSpecification())
.header("Accept","application/vnd.******.dv-1.19+xml")
.header("Content-Type", "multipart/form-data")
.header("Authorization", "*** token=\""+access_token+"\"; authVersion=\"1.0\";")
.header("x-*****-***", "access_token")
.when()
.post()
.then()
.log().all()
.statusCode(200)
.extract()
.response();
}
}
答案 0 :(得分:0)
curl -F属性将使用Content-Type multipart / form-data http头生成包含数据的请求POST。
因此,要使用RestAssured,必须调用方法multipart(see the doc here)来上传文件。
这里是一个示例:
@Test
public void postMultipart() throws Exception {
RestAssuredMockMvc.mockMvc(mockMvc);
File xmlfile = resourceLoader.getResource("classpath:demo.xml").getFile();
given()
.log().all()
.multiPart("files", xmlfile, "application/xml")
.when()
.post("/upload")
.then()
.log().all()
.statusCode(200)
.extract()
.response();
}
所以参数 -F“ files = @ $ {XML}; type = application / vnd。******。dv-1.19 + xml” \
可以转换为 .multiPart(“ files”,{YOUR-XML},“ application / vnd。******。dv-1.19 + xml”)
您可以看到完整的源示例in my Github