NSURLSession的简单使用

目的:利用NSURLSession获取token.(NSURLConnection被弃用)
融云获取token:

    //实例化
    NSURLSession *session = [NSURLSession sharedSession];

    //定义NSMutableURLRequest
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.cn.ronghub.com/user/getToken.json"]];
    request.HTTPMethod = @"POST";
    
    NSString *nonce = [NSString stringWithFormat:@"%d", arc4random()];
    NSString *date = [NSString stringWithFormat:@"%f",[[[NSDate alloc] init] timeIntervalSince1970]];
    NSString *timestamp = [self sha1:[NSString stringWithFormat:@"%@%@%@", @"bSFbDeDXB9tBvC", nonce, date]];
    

    [request setValue:@"pgyu6atqylj5u" forHTTPHeaderField:@"App-Key"];
    [request setValue:nonce forHTTPHeaderField:@"Nonce"];
    [request setValue:date forHTTPHeaderField:@"Timestamp"];
    [request setValue:timestamp forHTTPHeaderField:@"Signature"];
    
    NSString *body = [NSString stringWithFormat:@"userId=%@&name=%@&portraitUri=%@",@"panda",@"wx",@"http%3A%2F%2Fabc.com%2Fmyportrait.jpg"];
    
    request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];
    
    //实例NSURLSessionTask
    NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        if (error) {
            NSLog(@"error %@", error);
        } else {
            
            NSString *stringH = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"response %@   \n%@", response, stringH);
            
        }
    }];
  //请求开始
    [task resume];

sha1:

//别忘了导入加密库
#import <CommonCrypto/CommonDigest.h>
- (NSString*)sha1:(NSString *)hashString
{
    const char *cstr = [hashString cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *data = [NSData dataWithBytes:cstr length:hashString.length];
    
    uint8_t digest[CC_SHA1_DIGEST_LENGTH];
    
    CC_SHA1(data.bytes, (CC_LONG)data.length, digest);
    
    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    
    for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x", digest[i]];
    
    return output;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 我们都知道在iOS9.0之后,以前使用的NSURLConnection已经过期,苹果推荐我们使用NSURLS...
    Mark_Guan阅读 4,300评论 0 4
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 5,306评论 0 6
  • 写在前面融云是一个比较强大的第三方框架,为我们提供了即时通讯的基本组件,导入SDK,进行一些简单的配置就可以看到会...
    汪小喵阅读 14,941评论 14 31
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,422评论 19 139
  • 文/卢拉 对于一座城市,我们留恋的是什么?是食物?是故事?还是故事里的人?走过了那么多城市,每一座城市都有特色美食...
    卢拉阅读 4,544评论 30 16