- 论坛徽章:
- 0
|
本帖最后由 aef25u 于 2019-03-22 13:08 编辑
perl6 使用百度翻译API遇到"{"error_code":"54001","error_msg":"Invalid Sign"}
请大家帮忙找一下问题。
判断问题出在:
- my $sign = $appid~$q~$salt~$secretKey;
- my $d=Digest::MD5.new;
- $sign =$d.md5_hex($sign.encode("ascii"));
复制代码 附代码:
- use Digest::MD5;
- use URI::Escape;
- use HTTP::UserAgent;
- translation({say "翻译:"},'"Doing multiple things at the same time"');
-
- sub translation(&code-ref,$q,$fromLang="zh", $toLang="en"){
- my $appid = '**********' ;#你的appid(这里是必填的, 从百度 开发者信息一览获取)
- my $secretKey = '*********'; #你的密钥(这里是必填的, 从百度 开发者信息一览获取)
- my $url='http://api.fanyi.baidu.com/api/trans/vip/translate';
- my $salt = (32768.. 65536).rand.Int;
- my $sign = $appid~$q~$salt~$secretKey;
- my $d=Digest::MD5.new;
- #{error_msg : Invalid Sign}==>$sign =$d.md5_hex($sign.encode("ascii"));
- $sign =$d.md5_hex($sign);
- $url = $url~'?appid='~$appid~'&q='~uri_escape($q)~'&from='~$fromLang~'&to='~$toLang~'&salt='~$salt~'&sign='~$sign;
- say $url;
-
- my $ua = HTTP::UserAgent.new;
- $ua.timeout = 10;
- my $resp=$ua.get($url);
- if $resp.is-success {
- my $par=$resp.content;
- say $par;
- } else {
- die $resp.status-line;
- }
- }
复制代码 代码参考这编文章改写https://www.jianshu.com/p/be93c26c7d5f(python3实现)
|
|