https://sms-intl.ap-southeast-1.aliyuncs.com/?AccessKeyId=dsfsdfdsfdsfdsf&Action=SendMessageToGlobe&Format=JSON&From=sdsadf&Message=gthet&RegionId=default&SecureTransport=true&SignatureMethod=HMAC-SHA1&SignatureNonce=0c4766c8889267ca02d733342a973461&SignatureVersion=1.0&SourceIp=41.210.145.133&Timestamp=2019-09-04T11%3A54%3A52Z&To=345435435435&Version=2018-05-01&Signature=j7UIvC%2B9whf1KyLxTjv0K4aFCyc%3 #### #!/usr/bin/perl -w use HTTP::Tiny; use POSIX qw(strftime); my $ua = HTTP::Tiny->new; $timestamp = strftime '%Y-%m-%dT%H:%M:%S', gmtime(); $ip = $ENV{'REMOTE_ADDR'}; $Nonce = int(rand(1000000)); $from = "sfsdfdf"; $message = "asdasd"; $to = "434534543"; my $url = "https://sms-intl.ap-southeast-1.aliyuncs.com"; my $data = { AccessKeyId => "sdsadasdasd", Action => "SendMessageToGlobe", Format => "JSON", From => $from, Message => $message, RegionId => "default", SecureTransport => "true", SignatureMethod => "HMAC-SHA1", SignatureNonce => $Nonce, SignatureVersion => "1.0", SourceIp => $ip, Timestamp => $timestamp, To => $to, Version => "2018-05-01", Signature => "j7UIvC+9whf1KyLxTjv0K4aFCyc=", }; my $params = $ua->www_form_urlencode( $data ); my $response = $ua->post( $url . '/?' . $params ); print "Content-type: text/html\n\n"; print $response->{content} . "\n"; #### {"Recommend":"https://error-center.aliyun.com/status/search?Keyword=SignatureDoesNotMatch&source=PopGw","Message":"Specified signature is not matched with our calculation. server string to sign is:POST&%2F&AccessKeyId%sdsadasd%26Action%3DSendMessageToGlobe%26Format%3DJSON%26From%3Dsfsdfdf%26Message%3Dasdasd%26RegionId%3Ddefault%26SecureTransport%3Dtrue%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D659993%26SignatureVersion%3D1.0%26SourceIp%3D41.210.145.133%26Timestamp%3D2019-09-04T13%253A49%253A02%26To%3D534534543345%26Version%3D2018-05-01","RequestId":"0C5E81D6-69E6-45FE-85AA-9D89E5C23267","HostId":"sms-intl.ap-southeast-1.aliyuncs.com","Code":"SignatureDoesNotMatch"}