Java 如何使用特定内容类型的重新发布设置多部分发送正文中包含表单数据的帖子
正在尝试发送一个POST请求,该请求的正文中包含表单数据,但不确定该如何发送。 在《邮递员》中,这很好 我试过这样的方法:Java 如何使用特定内容类型的重新发布设置多部分发送正文中包含表单数据的帖子,java,automated-tests,rest-assured,Java,Automated Tests,Rest Assured,正在尝试发送一个POST请求,该请求的正文中包含表单数据,但不确定该如何发送。 在《邮递员》中,这很好 我试过这样的方法: public Response create() { return super .given() .contentType("multipart/form-data") .multiPart("MetaDataOne", new File("fi
public Response create() {
return super
.given()
.contentType("multipart/form-data")
.multiPart("MetaDataOne", new File("file.txt"))
.multiPart("MetaDataTwo", new File("file2.txt"))
.basePath("/create")
.log().all()
.post()
.then()
.log().all()
.extract()
.response();
}
但我的文件似乎没有在请求中发送
控制台日志
多部件
内容配置表单数据;name=MetadataOne;文件名=文件
内容类型:应用程序/八位字节流
{错误:415,说明:不支持内容类型应用程序/八位字节流}
标题
使用RESTFull webservice Api非常简单,只需遵循以下简单步骤 步骤1:创建一个指向服务的请求对象 步骤2:创建一个包含所有表单字段的JSON对象 步骤3:在请求正文中添加JSON对象并发送请求 发布请求并检查响应 步骤4:验证响应
您可以尝试这样做吗?这应该将内容类型覆盖为多部分/表单数据,而不是应用程序/八位字节流
这回答了你的问题吗?嗨,谢谢你的邀请!在这个链接中,我们需要添加-.multiPartfile,新的FileTestUtil.getFileURI/examples/help.html,text/html,但是TestUtil.getFileURI没有被识别。了解我的问题,还需要了解如何修复它。呵呵。。所以现在的情况是,按照标准,我的multiPart将其内容类型设置为application/octet流。但是正确的应该是application/jsonce您能在这里发布由postman生成的curl请求吗?这会有帮助的,我在描述中添加了更多信息,因为我无法共享url:谢谢你的帮助我理解了我的问题,仍然需要理解如何解决它呵呵。。所以现在的情况是,按照标准,我的multiPart将其内容类型设置为application/octet流。但是正确的应该是application/jsonExactly!这是第3步中的第一行-request.headerContent-Type,application/jsonyes,但似乎我需要两个不同的集合。第一个是将头的contentType设置为多部分/表单数据,这很好。第二组我还不确定该怎么做,因为我需要为每个多部分设置一个不同的contentType,这应该是应用程序/json@Jimmy恕我直言,这个答案与这个问题毫无关系,步骤2只会生成一个Json负载,而这不是OP的要求
RestAssured.baseURI ="https://myhost.com/xyz";
RequestSpecification request = RestAssured.given();
JSONObject jsonObject = new JSONObject();
jsonObject.put("Form_Field_1", "Input Value 1");
jsonObject.put("Form_Field_2", "Input Value 2");
jsonObject.put("Form_Field_3", "Input Value 3");
jsonObject.put("Form_Field_4", "Input Value 4");
request.header("Content-Type", "application/json");
request.body(jsonObject.toJSONString());
Response response = request.post("/register");
int statusCode = response.getStatusCode();
given().contentType("multipart/form-data").multiPart("MetaDataOne", new File("file.txt"), "multipart/form-data")
.multiPart("MetaDataTwo", new File("file2.txt"), "multipart/form-data").basePath("/create").log().all()
.post().then().log().all().extract().response();