我正在尝试使用。
有人能帮我吗?
我正在使用Java和OkHttp3,并尝试这样做:
String url = "https://polly.us-west-2.amazonaws.com/v1/speech";
String postBody = "{\"OutputFormat\":\"mp3\",\"Text\":\"Some text to listen\",\"TextType\":\"text\",\"VoiceId\":\"Joanna\"}";
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(url)
.addHeader("Authorization", "AWS <accessKey>:<secretKey>")
.post(RequestBody.create(mediaType, postBody))
.build();
Response response = client.newCall(request).execute();并收到"403禁止“的答复。然后,我尝试在网上完成这个帖子请求,并收到了以下消息:

我做错了什么?我该做些什么?谢谢!
亚马逊文档:链接
请不要建议我使用SDK!
我读过这,这,这,这和这,但仍然什么也不懂。
method=POST,host=polly.us-west-2.amazonaws.com,endpoint=https://polly.us-west-2.amazonaws.com/v1/speech,region=us-west-2,content-type=application/json,body of post request={...},accessKey=...,secretKey=...以及如何使用OkHttp发出此请求?求你了救命!发布于 2017-06-27 00:39:16
addHeader("Authorization", "AWS <accessKey>:<secretKey>")是,从未在AWS上做过。你的秘密钥匙是秘密的。
通过对请求进行签名来验证请求,使用基于秘密密钥的一系列HMAC-SHA迭代。
有充分的理由不喜欢使用SDK,但是您需要阅读和理解生成签名的文档。
当您使用AWS命令行接口(AWS CLI)或其中一个AWS SDK向AWS发出请求时,这些工具会使用您在配置工具时指定的访问键自动为您签名请求。当您使用这些工具时,您不需要学习如何自己签署请求。但是,当您手动为AWS创建HTTP请求时,您必须自己对请求进行签名。 http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
从上面的链接开始,详细解释了签名过程。
所有区域的所有服务都支持签名版本4。
https://stackoverflow.com/questions/44770155
复制相似问题