zoukankan      html  css  js  c++  java
  • ios http请求

    1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,

    2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行

    3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节;

    4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    1、     同步GET请求
     
        //第一步,创建URL
     
        NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
     
         
     
        //第二步,通过URL创建网络请求
     
        NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
     
        //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
     
          其中缓存协议是个枚举类型包含:
     
          NSURLRequestUseProtocolCachePolicy(基础策略)
     
          NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)
     
          NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)
     
          NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)
     
          NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
     
          NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)
     
        //第三步,连接服务器
     
        NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
     
         
     
        NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
     
         
     
        NSLog(@"%@",str);
     
    2、同步POST请求
     
        //第一步,创建URL
     
        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);
    3、异步GET请求
     
        //第一步,创建url
     
        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];
    4、异步POST请求
     
        //第一步,创建url
     
        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];
     
    5、异步请求的代理方法
     
    //接收到服务器回应的时候调用此方法
     
    - (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]);
  • 相关阅读:
    HDU 4296 Buildings(贪心)
    HDU 4288 Coder(线段树)
    hdu 5073 Galaxy
    ZOJ 3905 Cake(贪心+dp)
    ZOJ 3903 Ant(公式推导)
    除法求逆元(扩展欧几里德和费马小定理)
    HDU 4442 Physical Examination(关于贪心排序)
    ACM vim配置
    2015 南阳ccpc The Battle of Chibi (uestc 1217)
    次小生成树(入门)
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/5171020.html
Copyright © 2011-2022 走看看