#import "ViewController.h"
#import "AFHTTPRequestOperationManager.h"
#import <CommonCrypto/CommonDigest.h>
#define AppKey @"你应用的Appkey"
#define AppSecret @"你应用的Appsecret"
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
AFHTTPRequestOperationManager *nManage = [AFHTTPRequestOperationManagermanager];
nManage.responseSerializer = [[AFHTTPResponseSerializeralloc]init];
// 随机数,无长度限制
NSString *Nonce = [NSStringstringWithFormat:@"%d",arc4random()];
// 以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT的时间间隔
NSDate *dateObc = [NSDatedate];
NSString *Timestamp = [NSStringstringWithFormat:@"%d",(int)[dateObctimeIntervalSince1970]];
// 将系统分配的 AppSecret、Nonce (随机数)、Timestamp (时间戳)三个字符串按先后顺序拼接成一个字符串并进行 SHA1哈希计算
NSString *Signature = [selfsha1:[NSStringstringWithFormat:@"%@%@%@",AppSecret,Nonce,Timestamp]];
// 每次请求 API接口时,均需要提供 4个 HTTP Request Header
[nManage.requestSerializersetValue:AppKeyforHTTPHeaderField:@"App-Key"];
[nManage.requestSerializersetValue:NonceforHTTPHeaderField:@"Nonce"];
[nManage.requestSerializersetValue:TimestampforHTTPHeaderField:@"Timestamp"];
[nManage.requestSerializersetValue:SignatureforHTTPHeaderField:@"Signature"];
// 表单参数
NSMutableDictionary *parameter = [NSMutableDictionarydictionary];
parameter[@"userId"] =@"10101011";
parameter[@"name"] =@"张三";
parameter[@"portraitUri"] =@"https://www.baidu.com/img/baidu_jgylogo3.gif";
[nManage POST:@"https://api.cn.rong.io/user/getToken.json"parameters:parametersuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:responseObjectoptions:0error:nil];
NSLog(@"-----UserInfomation---%@",dic);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"-----%@---",error);
}];
}
/*使用下面方法需要导入 CommonCrypto/CommonDigest.h*/
// 哈希计算
- (NSString *) sha1:(NSString *)input
{
NSData *data = [inputdataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, (unsignedint)data.length, digest);
NSMutableString *output = [NSMutableStringstringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];
for(int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
[output appendFormat:@"%02x", digest[i]];
}
return output;
}
@end
iOS融云获取Token问题,献给iOS融云新手!
最新推荐文章于 2021-08-06 15:48:24 发布