如何使用Java从使用Glassfish和REST协议设置的AmazonAWS服务器检索文件?
我设置了一个AmazonAWSLinuxServer实例(EC2),其中包含一些音频文件,我希望使用RESTProtocolWeb服务检索这些文件。由于某些原因,my getAudio函数的URL不正确如何使用Java从使用Glassfish和REST协议设置的AmazonAWS服务器检索文件?,java,rest,amazon-web-services,amazon-ec2,glassfish,Java,Rest,Amazon Web Services,Amazon Ec2,Glassfish,我设置了一个AmazonAWSLinuxServer实例(EC2),其中包含一些音频文件,我希望使用RESTProtocolWeb服务检索这些文件。由于某些原因,my getAudio函数的URL不正确 @Path("/get/{fileName}") // http://IP.ADDRESS/audio/get/{fileName} @GET @Produces("application/wav") public Response getAudio(@PathParam("fileName")
@Path("/get/{fileName}") // http://IP.ADDRESS/audio/get/{fileName}
@GET
@Produces("application/wav")
public Response getAudio(@PathParam("fileName") String fileName) {
ResponseBuilder response = null;
StringBuilder builder = new StringBuilder();
builder.append(AUDIO_PATH).append(fileName).append(".wav");
File file = new File(builder.toString());
response = Response.ok(file);
response.header("Content-Disposition", "attachment; filename=" + fileName + ".wav")
.header("Access-Control-Allow-Origin", "*");
return response.build();
}
AUDIO_PATH是最后一个字符串变量,它包含Linux实例中创建的音频文件的关联路径
关于Glassfish,这是一个应用服务器,允许我部署web服务,该服务包括此功能以及一些其他工作功能
当我使用Glassish运行一个URL时,我知道它被正确地输入了,有一个404错误,表示找不到该URL。我在Amazon管理控制台中创建了一个允许HTTP协议的安全异常
我尝试访问此getAudio函数时使用的URL为:
这个端口号是80,因为当您为HTTP协议添加一个安全异常时,它说要使用这个端口号。在Linux实例的/audio_PATH/PATH中还有一个名为“hello.wav”的已创建音频文件,我正试图在URL中下载该文件
这也是一个旁注,但我使用IntelliJ IDE中的Glassfish运行我的程序,它还包含一个createAudio函数,路径为:@path(“/create/{fileName}/{text}”)
此功能可以工作,根据输入的文本创建音频,但我无法从实例下载音频。您收到任何响应的事实表明您的安全组(防火墙)允许您的请求通过EC2服务器。如果存在安全组问题,您的连接将一直挂起,直到超时 您的代码看起来像是在使用Jersey。您可能需要在GET请求中包含一个
Accept:application/wav
头,以便Jersey知道如何将其与指定的端点相匹配