使用带认证头的AWS API网关上传音频



我正在使用AWS API网关和OkHTTP发送音频。效果很好。但当我添加认证头信息时它会显示错误

Stream Close

我正在使用Ghedeon的库添加签名。

String API_GATEWAY_SERVICE_NAME = "execute-api";
RequestBody requestFile = create("audio/wave", inputStream);
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 okHttpClient = new OkHttpClient.Builder()
.addInterceptor(awsInterceptor)
.build();

okhttp3.Request request = new okhttp3.Request.Builder()
.url(url)
.post(requestFile)
.build();
Response response = okHttpClient.newCall(request).execute();
String response_body = response.body().string();

我使用相同的代码上传JSON数据。使用

可以很好地工作

MediaType"应用程序/json"

,不报错。

如何修改此代码以使用它进行音频上传?是否有其他的方式来发送音频使用API网关?

好的。首先,这个库能够使用带有签名的API网关将音频文件上传到AWS。

结果是当我们调用

创建("音频/wave" inputStream)

这个创建函数关闭inputstream在计算它的长度之前。长度在header"content-length">

我所做的就是计算inputstream的长度在调用create函数之前,然后在header中使用。

最新更新