阿里云api签名ios端(图片识别为例)

#import "GTMBase64.h"

#import "MD5.h"

#include <CommonCrypto/CommonDigest.h>

#include <CommonCrypto/CommonHMAC.h>


- -(void)distinguishSence:(NSString *)type image_url :(NSString *)image_url content :(NSString *)content Success:(TTIClientManagerBlock)success failuer:(TTIClientManagerBlock)failure { //以下为阿里云api签名 NSString *inPutText = [NSString stringWithFormat:@"{\"type\": \"1\", \"content\":\"%@\"}",content]; //GTM时间 NSDate *date = [NSDate date]; NSTimeZone *tzGMT = [NSTimeZone timeZoneWithName:@"GMT"]; [NSTimeZone setDefaultTimeZone:tzGMT]; NSDateFormatter *iosDateFormater=[[NSDateFormatter alloc]init]; iosDateFormater.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss 'GMT'"; iosDateFormater.locale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]; NSString *dateGMT = [iosDateFormater stringFromDate:date]; NSString *path = [[NSURL URLWithString:@"https://dtplus-cn-shanghai.data.aliyuncs.com/image/scene"] path]; NSString *url = @"https://dtplus-cn-shanghai.data.aliyuncs.com/image/scene"; NSString *accept = @"application/json"; NSString *content_type = @"application/json"; NSString *AccessKeyId = @""; NSString *AccessKeySecret = @"xxx"; const char *cStr = [inPutText UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, (CC_LONG)strlen(cStr), digest ); NSData * base64 = [[NSData alloc]initWithBytes:digest length:CC_MD5_DIGEST_LENGTH]; base64 = [GTMBase64 encodeData:base64]; NSString *md5Body = [[NSString alloc] initWithData:base64 encoding:NSUTF8StringEncoding]; NSString *stringToSign = [NSString stringWithFormat:@"POST\n%@\n%@\n%@\n%@\n%@", accept, md5Body, content_type, dateGMT, path]; NSString *signature = [self HmacSha1WithSecret:AccessKeySecret data:stringToSign]; NSString *authHeader = [NSString stringWithFormat:@"Dataplus %@:%@", AccessKeyId, signature]; NSURL *nsurl = [NSURL URLWithString:url]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsurl]; request.HTTPMethod = @"POST"; [request setValue:@"application/json" forHTTPHeaderField:@"content-type"]; [request setValue:@"application/json" forHTTPHeaderField:@"accept"]; [request setValue:dateGMT forHTTPHeaderField:@"date"]; [request setValue:authHeader forHTTPHeaderField:@"Authorization"]; [request setValue:@"keep-alive" forHTTPHeaderField:@"Connection"]; request.HTTPBody = [inPutText dataUsingEncoding:NSUTF8StringEncoding]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (error) { //请求失败 DLOG(@"请求失败"); failure(nil, error); } else { //请求成功 DLOG(@"请求成功"); NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; success(nil, jsonDict); } }]; [dataTask resume]; //开始请求 } - (NSString *)HmacSha1WithSecret:(NSString *)key data:(NSString *)data { const char *cKey = [key cStringUsingEncoding:NSUTF8StringEncoding]; const char *cData = [data cStringUsingEncoding:NSUTF8StringEncoding]; unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC); NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)]; NSString *hash = [HMAC base64EncodedString]; return hash; }

  

转载于:https://www.cnblogs.com/z-z-z/p/10901471.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值