Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OkHTTP下载的文件为空_Java_Android_Audio_Okhttp_Amazon Api Gateway - Fatal编程技术网

Java OkHTTP下载的文件为空

Java OkHTTP下载的文件为空,java,android,audio,okhttp,amazon-api-gateway,Java,Android,Audio,Okhttp,Amazon Api Gateway,我正在尝试使用OkHTTP从AWS下载音频.wav文件 问题 API正在执行。它没有给出错误,但下载的文件大小仍然是660B,而应该是61.92KB。当我尝试使用相同的api链接从浏览器下载音频时,下载效果非常好。然而,android手机并没有获取所有字节 下面是下载文件的代码 Request request = new Request.Builder() .url(audio_url) .build(); Aws

我正在尝试使用OkHTTP从AWS下载音频.wav文件

问题

API正在执行。它没有给出错误,但下载的文件大小仍然是660B,而应该是61.92KB。当我尝试使用相同的api链接从浏览器下载音频时,下载效果非常好。然而,android手机并没有获取所有字节

下面是下载文件的代码

Request request = new Request.Builder()
                    .url(audio_url)
                    .build();

AwsInterceptor awsInterceptor = new AwsInterceptor(new AWSCredentialsProvider() {
   @Override
   public AWSCredentials getCredentials() {
     return new BasicAWSCredentials(access_key_id, secret_access_key);
   }

   @Override
   public void refresh() {

   }
}, API_GATEWAY_SERVICE_NAME, region);


OkHttpClient client = new OkHttpClient.Builder()
                    .addInterceptor(awsInterceptor)
                    .build();

client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        
          String mMessage = e.getMessage();
          Log.e("failure Response", mMessage);
          call.cancel();

   }

     @Override
     public void onResponse(Call call, Response response) throws IOException {

         byte[] rawData = response.body().bytes();
         File recordingFile = new File(dir_path, file_name+".wav");
         bytesToWav(recordingFile, rawData);

         /*try (BufferedSource bufferedSource = response.body().source()) {
              BufferedSink bufferedSink = Okio.buffer(Okio.sink(recordingFile ));
              bufferedSink.writeAll(bufferedSource);
              bufferedSink.close();
        }*/

     }
});
我尝试过的解决方案

我尝试了多种解决方案,比如使用okio下载,但都不起作用

我试过了,但没用。我想不出是什么问题


另外,如果有任何其他方式下载.wav文件,请告诉我。

下载的文件包含在
byte[]rawData=response.body().bytes()中rawData.length
。那是零吗?如果不是,那么有多少字节?rawData.length()显示660B。当我把它转换成.wav时,它就变成了704B。但当我应用解决方案4时,大小仍然为0B。原始文件大小为61.92KB
rawData.length()显示660B
Wel。。。你对这几个字节的评论在哪里?它应该是61.92KB,但有多少字节是61.92KB?61920B。使用660B,我们无法播放音频。这意味着文件缺少字节。我很困惑。为什么会丢失这些字节?我如何才能获取它们?由OkHttp的开发人员支持。