美文网首页
原生网络请求NSURLSession的应用

原生网络请求NSURLSession的应用

作者: AE86 | 来源:发表于2019-06-25 10:34 被阅读0次

    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的应用

          本文链接:https://www.haomeiwen.com/subject/copoqctx.html