无法为GET类型的休息Web服务确保获取标头数据

时间:2017-03-01 13:35:56

标签: java rest-assured apache-wink

我有GET REST API,它在响应头中发送一些信息。 我正在使用放心框架编写测试用例,我面临的问题是,在GET API的响应中,我没有得到服务器在其余API响应中设置的头字符串。 我在Rest客户端和HTTP资源中检查了相同的API,在那里我可以看到服务器在API响应中设置的头信息。

但是在确定的Response对象中,服务器设置的头信息不可用。

Rest API代码:

 @Path("/download")
    @GET
    @Produces("application/zip")
    public Response downloadContractZipFile(@PathParam("contractId") final String contractId) throws CMException{
        ContractActionRequest contractActionRequest = new ContractActionRequest();
        contractActionRequest.setId(contractId);
        DownloadActionResponse  downloadActionResponse  = (DownloadActionResponse) executeAction(Action.DOWNLOAD, contractActionRequest);

        Response res =  Response
                 .ok(downloadActionResponse.getFilestream(), MediaType.APPLICATION_OCTET_STREAM)
                 .header("content-disposition",downloadActionResponse.getContentDisposition())
                 .header("Expires", "0")
                 .header("Content-Length",  String.valueOf(downloadActionResponse.getContentLength()) )
                 .build();  
        return res;
    }   

上面你可以看到,API在标题中返回 Content-Length 。但是当我使用放心框架调用上面的API时,它不会在标头中收到“Content-Length”。断言失败了。 放心测试案例代码:

given().get(propertyURI).then().assertThat().header("Content-Length","7562");


java.lang.AssertionError: Expected header "Content-Length" was not "7562", was "null". Headers are:
X-Powered-By=Servlet/3.0
Cache-Control=no-cache, no-store
Cache-directive=no-cache
Pragma=no-cache
Pragma-Directive=no-cache
Expires=Thu, 01 Jan 1970 00:00:00 GMT
Content-Type=text/html;charset=UTF-8
x-authenticated=false
x-location=https://reena:9453/app/login.jsp?targetApp=OM
Content-Language=en-US
Transfer-Encoding=chunked

1 个答案:

答案 0 :(得分:-1)

我建议您尝试使用Karate而不是REST-Assured,因为它可以更好地支持验证响应标头。

(免责声明:我是空手道开发者)