我有一个使用Eclipse开发的Web服务。现在我想用RESTClient程序测试它。我希望客户端下载我在Eclipse中定义的视频:
@Path("/university")
public class Video {
//this is the location of the .avi
private static final String VIDEO_FILE = "F:\\file.avi";
@GET
@Path("/video")
@Produces("video/avi")
public Response getVideoFile() {
File file = new File(VIDEO_FILE);
ResponseBuilder response = Response.ok((Object) file);
response.header("Content-Disposition", "attachment; filename=\"abc.avi\"");
return response.build();
}
@GET
@Path("/{fileName}/video")
@Produces("video/avi")
public Response getFileInVideoFormat(@PathParam("fileName") String fileName) {
System.out.println("File requested is : " + fileName);
if (fileName == null || fileName.isEmpty()) {
ResponseBuilder response = Response.status(Status.BAD_REQUEST);
return response.build();
}
File file = new File("c:/abc.avi");
ResponseBuilder response = Response.ok((Object) file);
response.header("Content-Disposition", "attachment; filename=abc.avi");
return response.build();
}
}
但是当我使用RESTClient(我在其中指定METHOD=GET, HEADER(key=accept,value=video/avi)
)进行测试时,我遇到了错误。可能是什么问题?
答案 0 :(得分:0)
首先,如果您的REST服务没有@Consume
,则不必在标头中指定“Accept”参数(请参阅HTTP请求规范)。
其次,您的通话应该是contextpath/university/video
或contextpath/university/filename/video
。
第三,不要使用/video
和/{anystring}/video
之类的模糊REST路径,您的应用服务器可以理解您的呼叫错误。使用模式(例如/{id:[0-9]+
)或将/{filename}/video
重命名为/video/{filename}
以避免模棱两可。