• 同步和异步GET,POST请求


    #pragma mark -同步GET请求

    - (IBAction)synGet:(id)sender

    {

        //第一步,创建URL

        NSURL *url=[[NSURL alloc]initWithString:@"http://www.weather.com.cn/data/sk/101010100.html"];

        //第二步,通过URL创建网络请求

        NSURLRequest *request=[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

        //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)

    //    其中缓存协议是个枚举类型包含:

    //    NSURLRequestUseProtocolCachePolicy(基础策略)

    //    NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)

    //    NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)

    //    NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)

    //    NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)

    //    NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)

       

        //第三步,连接服务器

        NSURLResponse *response=nil;

        NSError *error=nil;

        NSData *received=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

        NSString *str=[[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str);

    }

    #pragma mark -同步POST请求

    - (IBAction)synPost:(id)sender

    {

        NSURL *url=[NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];

        NSMutableURLRequest *request=[[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

        [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET

        NSString *str=@"type=focus-c";//设置参数

        NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];

        [request setHTTPBody:data];

        NSData *received=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

        NSString *str1=[[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str1);

    }

    //异步GET请求

    -(void)a{

        NSURL *url=[NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];

        NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

        NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

    }

    //异步POST请求

    -(void)b{

        NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];

        NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

        [request setHTTPMethod:@"POST"];

        NSString *str = @"type=focus-c";

        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

        [request setHTTPBody:data];

        NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

    }

    //异步请求的代理方法

    //接收到服务器回应的时候调用此方法

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

    {

        NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;

        NSLog(@"%@",[res allHeaderFields]);

        self.receiveData = [NSMutableData data];

    }

    //接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次

    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

    {

        self.receiveData appendData:data];

    }

    //数据传完之后调用此方法

    -(void)connectionDidFinishLoading:(NSURLConnection *)connection

    {

        NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];

        NSLog(@"%@",receiveStr);

    }

    //网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法

    -(void)connection:(NSURLConnection *)connection

    didFailWithError:(NSError *)error

    {

        NSLog(@"%@",[error localizedDescription]);

    }

  • 相关阅读:
    各国语言缩写列表,各国语言缩写-各国语言简称,世界各国域名缩写
    How to see log files in MySQL?
    git 设置和取消代理
    使用本地下载和管理的免费 Windows 10 虚拟机测试 IE11 和旧版 Microsoft Edge
    在Microsoft SQL SERVER Management Studio下如何完整输出NVARCHAR(MAX)字段或变量的内容
    windows 10 x64系统下在vmware workstation pro 15安装macOS 10.15 Catelina, 并设置分辨率为3840x2160
    在Windows 10系统下将Git项目签出到磁盘分区根目录的方法
    群晖NAS(Synology NAS)环境下安装GitLab, 并在Windows 10环境下使用Git
    使用V-2ray和V-2rayN搭建本地代理服务器供局域网用户连接
    windows 10 专业版安装VMware虚拟机碰到的坑
  • 原文地址:https://www.cnblogs.com/ioschen/p/3290510.html
Copyright © 2020-2023  润新知