2

(解決済み): これは、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) {
}

どんな助けでも大歓迎

4

1 に答える 1