(解決済み): これは、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);
サーバーコード: (図 1)
@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 を実行すると、パラメーター「名前」と「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) {
}
どんな助けでも大歓迎