REST服务调用因RESTClient而失败

时间:2014-10-12 17:11:04

标签: java restful-url rest-client

我有一个使用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))进行测试时,我遇到了错误。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

首先,如果您的REST服务没有@Consume,则不必在标头中指定“Accept”参数(请参阅HTTP请求规范)。

其次,您的通话应该是contextpath/university/videocontextpath/university/filename/video

第三,不要使用/video/{anystring}/video之类的模糊REST路径,您的应用服务器可以理解您的呼叫错误。使用模式(例如/{id:[0-9]+)或将/{filename}/video重命名为/video/{filename}以避免模棱两可。