java - 如何通过 RestAssured 配置和发送多部分请求
问题描述
我正在尝试配置和发送一个多部分请求,如下所示:
------boundary
Content-Disposition: form-data; name="before"; filename="blob"
Content-Type: application/vnd...+json;type=some_type
{some JSON}
------boundary
Content-Disposition: form-data; name="after"; filename="blob"
Content-Type: application/vnd...+json;type=some_type
{another JSON}
------boundary--
所以我尝试配置一个请求,如下面的代码
RestAssuredConfig config = RestAssured.config().multiPartConfig(
new MultiPartConfig().defaultCharset(StandardCharsets.UTF_8).
defaultBoundary("--boundary--"));
MultiPartSpecification m1 new MultiPartSpecBuilder(
new ObjectMapper().writeValueAsString(some_JSON_transformed_to_HashMap)).
fileName("blob").controlName("before").
mimeType(ContentType.TEXT.getAcceptHeader()).
header("ContentType", "application/vnd...+json;type=some_type").build();
MultiPartSpecification m2 = new MultiPartSpecBuilder(
new ObjectMapper().writeValueAsString(another_JSON_transformed_to_HashMap)).
fileName("blob").controlName("after").
mimeType(ContentType.TEXT.getAcceptHeader()).
header("ContentType", "application/vnd...+json;type=some_type").build();
RequestSpecification request = RestAssured.given().multiPart(m1).multiPart(m2).
config(config).
.header("Content-Type", "multipart/form-data; boundary=" + config.getMultiPartConfig().defaultBoundary());
request.post("some_url");
但是当我尝试执行它时,服务器说资源无效,但我相信 JSON 是正确的,所以我想我的多部分配置不正确。我应该如何配置请求?
解决方案
您可以尝试类似于下面的代码。
given().auth().preemptive()
.basic("Jirausername", "Jirapassword")
.header("X-Atlassian-Token", "nocheck")
.multiPart(new File("/home/users/cat.log"))
.when().post("http://localhost:8181/rest/api/2/issue/STS-223/attachments");
推荐阅读
- intellij-idea - PhpStorm 中的格式化代码不起作用,因为我需要它才能工作
- apache-flink - JSONDeserializationSchema 无法解析为类型
- javascript - 如何将具有动态 ID 的文档保存到 Cloud Firestore?总是在变化
- sql-server - 基于用户在 Tableau 上登录的显示名称
- python - 从石墨烯(graphql)突变返回用户定义的数据结构
- react-native - 在集成 react-native-google-signin 时在 Xcode 中遇到此问题“ ios/Pods/AppAuth/Source/iOS/OIDExternalUserAgentIOS.h:30:1: Expected ','”
- reactjs - 调用 React.Component 时,React 生命周期方法不会触发
的 render() 方法 - c++ - 堆上的对象在创建后立即被删除
- python - 将列表的字符串表示形式更改为 numpy 数组?
- swift - 创建愚蠢的“直通”对象