Java OkHTTP下载的文件为空
我正在尝试使用OkHTTP从AWS下载音频.wav文件 问题 API正在执行。它没有给出错误,但下载的文件大小仍然是660B,而应该是61.92KB。当我尝试使用相同的api链接从浏览器下载音频时,下载效果非常好。然而,android手机并没有获取所有字节 下面是下载文件的代码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
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.92KBrawData.length()显示660B
Wel。。。你对这几个字节的评论在哪里?它应该是61.92KB,但有多少字节是61.92KB?61920B。使用660B,我们无法播放音频。这意味着文件缺少字节。我很困惑。为什么会丢失这些字节?我如何才能获取它们?由OkHttp的开发人员支持。