微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter使用sigv4插件发出的AWS Polly请求

如何解决Flutter使用sigv4插件发出的AWS Polly请求

我正在使用https://pub.dev/packages/sigv4 dart软件包向AWS Polly发出请求。我收到403错误消息,提示 {“ message”:“我们计算出的请求签名与您提供的签名不匹配。请检查您的AWS Secret Access密钥和签名方法。有关详细信息,请参阅服务文档。”} 。这是我的代码

import 'package:http/http.dart';
import 'package:sigv4/sigv4.dart';
void main() async {
  final client = sigv4Client(
    keyId: <accessKEY>,accessKey: <SecretAccessKEY>,region: 'us-east-1',serviceName: 'polly',);

  final request = client.request(
    'https://polly.us-east-1.amazonaws.com/v1/speech',method: 'POST',body: jsonEncode({"OutputFormat": "mp3","VoiceId": "Salli","Text": "Hi,this is a request","TextType": "text"})
  );
var responde = await post(request.url,headers: request.headers,body: request.body);
print(responde.body);

我也没有使用aws_polly_api的运气。我收到aws_polly_api的错误未处理的异常:403 UnkNownError:403 。这是我使用的代码

import 'package:aws_polly_api/polly-2016-06-10.dart';
import 'package:http/http.dart' as http;
void main() async{

  
  var credentials = new AwsClientCredentials(accessKey: <AccessKEY>,secretKey: <SecretAccessKEY);
  var outputFormat1 = OutputFormat.mp3;
  var text1 = "Hi,This is a request";
  var voiceId1 = VoiceId.salli;
  var textType1 = TextType.text;
  var url = "https://polly.us-east-1.amazonaws.com/v1/speech";

  var httpclient = new http.Client();

  final service = Polly(region: 'us-east-1',credentials: credentials,client: httpclient,endpointUrl: url);
  var resp = service.synthesizeSpeech(outputFormat: outputFormat1,text: text1,voiceId: voiceId1);
  resp.then((value) => print(value));
}

我们非常感谢您提供有关如何使AWS Polly顺利运行的任何帮助。另外,如果发送的输入错误,请帮助我进行更正。

我已经尝试过使用Postman对SynthesizeSpeech API进行相同的请求,并且该请求有效...除了“ Content-type:'application / json'”外,没有添加任何其他标头。刚刚以原始json的形式提出了带有AWS签名和正文的请求:

{
      "OutputFormat": "mp3","TextType": "text"
}

它在邮递员中工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。