如何用MULTIPART_FORM_DATA编写Restfuse HttpTest?

时间:2014-02-04 15:08:46

标签: java rest junit

我无法弄清楚,如何编写Rest Test。请帮帮我。

我有一个RestService:

@POST
@Path("/insertDataInDB")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response insertDataInDB(@FormDataParam("inputfile")
MultipartFormDataInput inputfile) {

    do Stuff
}

该服务有效,我使用Chromes Rest Console进行了测试。

请求URI:

http://localhost:8080/persDB/rest/r/insertDataInDB

内容类型:

multipart/form-data

附件档案:

Test.xlsx 

参数键:

inputfile

休息测试看起来如何?我试过这个 但我无法弄清楚,在哪里放置参数键等。

@HttpTest(method = Method.POST, path = "persDB/rest/r/insertDataInDB", content = "{}", type = MediaType.MULTIPART_FORM_DATA, file = "inputfile.xlsx")
public void insertDataInDB() { 
  do Stuff
}

我得到了一个java.io.IOException:

2014-02-04 16:01:30,825   [http-/0.0.0.0:8080-2] SEVERE org.jboss.resteasy.core.SynchronousDispatcher - Failed executing POST r/insertDataInDB: org.jboss.resteasy.spi.ReaderException: java.io.IOException: Unable to get boundary for multipart

2 个答案:

答案 0 :(得分:0)

问题是当你设置" Content-Type = multipart / form-data"没有边界,服务器无法适当地读取表单数据。

其他服务器需要这样的东西: Content-Type = multipart / form-data;边界= MY_CUSTOM_BOUNDARY

Content-Type = multipart / form-data;边界= ----------------------------- 28947758029299

如果您想了解有关边界的更多信息,可以看到以下链接:[What is the boundary in multipart/form-data?

答案 1 :(得分:-1)

请看一下这个答案和完整的解释here

您需要将此标头添加到您的请求中:

 Accept-Encoding:multipart/form-data