(已解决):这是因为 PUT 的默认参数类型是请求参数而不是表单参数。将“parameters(..)”更改为“formParameters(..)”,它会起作用。
我的代码:JUNIT 测试:(图 1)
expect().statusCode(Status.NO_CONTENT.getStatusCode())
.given()
.parameters("name", name, "URL", URL)
.cookie(cookie_name, newapi_session_id)
.put("/IfdOrganization/"+orgGuid);
服务器代码:(图一)
@PUT @Path("/IfdOrganization/{guid}") @Produces({APPLICATION_XML, APPLICATION_JSON})
public void update(@PathParam("guid") String guid, @FormParam("name") String name,@FormParam("URL") String URL,@CookieParam(session_cookie_name) String sessionId, @Context HttpHeaders headers) {
}
问题:在我的 JUnit 测试中执行 PUT 时,服务器上的参数“name”和“URL”的值为 null(图 1)。如果我在 JUnit 测试中将“.put()”更改为“.post()”,并在服务器上将“@PUT”更改为“@POST”,则参数的值是正确的(图 2)。另外,在 AJAX 中使用 PUT 时,参数得到了正确的值,这意味着问题不是来自服务器。
我正在使用 Eclipse 开普勒、Windows 8 和 rest-assured-1.8.0
JUNIT测试:(图2)
expect().statusCode(Status.NO_CONTENT.getStatusCode())
.given()
.parameters("name", name, "URL", URL)
.cookie(cookie_name, newapi_session_id)
.post("/IfdOrganization/"+orgGuid);
服务器代码:(图2)
@POST @Path("/IfdOrganization/{guid}") @Produces({APPLICATION_XML, APPLICATION_JSON})
public void update(@PathParam("guid") String guid, @FormParam("name") String name,@FormParam("URL") String URL,@CookieParam(session_cookie_name) String sessionId, @Context HttpHeaders headers) {
}
任何帮助表示赞赏