zoukankan      html  css  js  c++  java
  • 网络编程(一) 利用NSURLSession发送GET POST请求

    Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问。

     使用NSURLSession进行网络请求的流程:

         1.构造NSURL

         2.构造NSURLRequest请求对象

         3.构造NSURLSession会话对象

         4.创建网络请求任务:dataTask, downloadTask, uploadTask

         5.发送网络请求

    1.GET 请求(GET一般用于获取/查询资源信息)

    复制代码
    - (void)HTTPGET
    {
        //1.构造NSURL
        NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"];
        //2.构造NSURLRequest请求对象
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        //对请求对象进行设置
        request.URL = url;
        request.HTTPMethod = @"GET";
        //3.构造NSURLSession会话对象
        NSURLSession *session = [NSURLSession sharedSession];
        //4.创建dataTask网络请求任务(请求任务有3种dataTask, downloadTask, uploadTask)
        /*
         (1)completionHandler:是网络请求完成后会回调的block
         (2)response代表响应对象,可以由它获取当前响应的状态,响应头数据
         (3)data代表服务器传输的数据,即响应体的内容
         (4)error代表请求过程中出现错误,可以用它进行调试。
         */
        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
            //打印响应状态码,200表示请求成功,其他百度一下HTTP响应状态码对照看就可以了
            NSLog(@"响应状态码 = %ld",HTTPResponse.statusCode);
            
            //这里返回的是json数据,对响应数据进行json解析
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            NSLog(@"接收到的数据:%@",result);
            
        }];
        
        //5.开始发送网络请求或者是继续之前挂起的网络请求任务
        [dataTask resume];
        
    }
    复制代码

    2.POST请求(POST一般用于更新资源信息,也有很多情况是获取指定信息,需要在请求体里添加相应内容)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    - (void)HTTPPOST
    {
        //1.构造NSURL
        //2.构造NSURLRequest请求对象
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        request.URL = url;
        request.HTTPMethod = @"POST";
         
        NSString *bodyString = @"cinema_id=1533";
        request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
        //3.构造NSURLSession会话对象(单例)
        NSURLSession *session = [NSURLSession sharedSession];
        //4.创建dataTask网络请求任务
        NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            //打印响应状态码,200表示请求成功,其他百度一下HTTP响应状态码对照看就可以了
            NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
            NSLog(@"响应状态码 = %ld",HTTPResponse.statusCode);
            //获取响应体数据,进行JSON解析
            NSError *jsonError = nil;
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
            NSLog(@"%@", result);
        }];
         
        [task resume];
    }

    打印结果 

  • 相关阅读:
    Eclipse报错:pom.xml web.xml is missing and <fainOnMissingWebXml> is set to true
    WebStrom之React Native之HelloWord 【Windows】
    React Native报错:This error often happens when you’re running the packager (local dev server) from a wrong folder
    'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件。【Windows】
    Spring Boot项目部署到tomcat启动失败404
    Codeforces Beta Round #51 D. Beautiful numbers 数位DP
    UOJ 34 FFT
    POJ 2773 容斥原理
    HTPJ 1268 GCD
    HDOJ 2082 生成函数
  • 原文地址:https://www.cnblogs.com/luoxiaofu/p/5220749.html
Copyright © 2011-2022 走看看