原生网络请求NSURLSession的应用

iOS9.0后,官方推出了NSURLSession用来替代NSURLConnection来实现网络请求。这里我们就介绍一下NSURLSession的简单应用。


1、GET请求

        NSURLSession *session = [NSURLSession sharedSession];

        NSString*urlStr = @"https://XXX";

        NSURL*url = [NSURL URLWithString:urlStr];

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

        request.HTTPMethod=@"GET";//设置请求方式

        request.timeoutInterval=15;//设置超时时间

        [requestsetValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];//设置请求头类型

        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];

        request.HTTPBody= jsonData;//设置消息体

        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

                //解析数据 返回json解析

                if(data) {

                    NSDictionary *responsedict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

    }];

        [dataTask resume];


2、POST请求

    把 HTTPMethod设置为POST即可

    request.HTTPMethod=@"POST";//设置请求方式


下面介绍Content-Type几种值的区别及用法

1、Content-Type常用的的类型有

    1.1 application/json:消息主体是序列化后的JSON字符串

    1.2 application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式

    1.3 text/plain:数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。    

2、实际应用中常用的几种用法

    2.1 application/json:请求主题为json格式的字符串,服务器端会对json字符串进行解析,大多数都是用此类型

    2.2  application/x-www-form-urlencoded:服务端要求以键值对key1=value1&key2=value2方式上传消息体。需要设置成此模式 

    此时客户端需要对上传的消息体做转换处理。参考如下

        NSString *keyValueFormat;

        NSMutableString *result = [NSMutableString new];

        NSEnumerator *keyEum = [parameters keyEnumerator];

        idkey;

        while(key = [keyEum nextObject]) {

            keyValueFormat = [NSStringstringWithFormat:@"%@=%@&",key,[parameters valueForKey:key]];

            [result appendString:keyValueFormat];

        }

        NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];

你可能感兴趣的:(原生网络请求NSURLSession的应用)