簡體   English   中英

如何使用Java從使用Glassfish和REST協議設置的Amazon AWS服務器中檢索文件?

[英]How do I retrieve a file using Java from an Amazon AWS server that I set up using Glassfish and the REST protocol?

我設置了一個Amazon AWS Linux服務器實例(EC2),其中包含一些我想使用REST協議Web服務檢索的音頻文件。 由於某些原因,我的getAudio函數的URL不正確。

@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是最終的String變量,其中包含Linux實例中創建的音頻文件的關聯路徑。

對於Glassfish,這是一個應用程序服務器,可讓我部署包含此功能以及其他一些工作功能的Web服務。

當我使用我知道正確輸入的Glassish運行URL時,出現404錯誤,表明找不到URL。 我在Amazon Management Console中創建了一個允許HTTP協議的安全例外。

我用來嘗試訪問此getAudio函數的URL是: http://IP.ADDRESS.OF.AWS.INSTANCE:80 / audio / get / hello

此端口號是80,因為當您為HTTP協議添加安全例外時,這就是它說要使用的端口號。 在Linux實例的/ AUDIO_PATH /路徑中還有一個已經創建的名為“ hello.wav”的音頻文件,這是我要在URL中下載的內容。

也是一個旁注,但是我正在從IntelliJ IDE中使用Glassfish運行程序,該程序還包含帶有以下路徑的createAudio函數: @Path("/create/{fileName}/{text}")

此功能有效,根據輸入的文本創建音頻,但是我無法從實例中下載音頻。

您收到任何響應的事實表明您的安全組(防火牆)正在允許您的請求通過您的EC2服務器。 如果存在安全組問題,您的連接將一直掛起,直到超時。

您的代碼看起來像您正在使用Jersey。 您可能需要在GET請求中包含一個Accept: application/wav標頭,因此Jersey會知道將其與指定的端點匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM