首页 > 代码库 > 常见从网络上请求数据流程

常见从网络上请求数据流程

GET请求与POST请求区别

1.GET请求的接口会包含参数部分,参数会作为网址的一部分,服务器地址与参数之间通过?来间隔.POST请求会将服务器地址与参数分开,请求接口中只有服务器地址,而参数会作为请求体的一部分,提交给后台服务器

2.GET请求参数会出现在接口中,不安全,POST请求相对安全

3.虽然GET请求与POST请求都可以用来请求与提交数据,POST多用于向后台提交数据,GET多用于从后台请求数据 

4.同步与异步的区别同步连接:主线程去请求数据,当数据请求完毕之前,其它操作一律不响应,会造成假死现象 异步连接:会单独开一个线程去处理网络请求,主线程依然处于交互,程序运行流畅


#define kVideoURL @"http://api.tudou.com/v3/gw
一. 异步POST请求方式
    1.根据网址初始化OC字符串对象   

NSString *urlString = [NSStringstringWithFormat:@"%@",kVideoURL];   

     2.创建NSURL对象   

NSURL *url = [NSURLURLWithString:urlString];   

     3.创建请求   

NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalCacheDatatimeoutInterval:10];   

    4.创建参数字符串对象   

NSString *parmStr = [NSStringstringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];   

    5.将字符串转为NSData对象   

NSData *parmData = http://www.mamicode.com/[parmStr>dataUsingEncoding:NSUTF8StringEncoding];   

     6.设置请求体   

[requestsetHTTPBody:parmData];   

    7.设置请求方式(POST)   

[requestsetHTTPMethod:@"POST”];
    8.异步连接(协议代理)   

[NSURLConnectionconnectionWithRequest:requestdelegate:self];

    9.服从<NSURLConnectionDataDelegate>协议

   10.实现协议中方法

   当服务器响应时触发

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


   self.data = [NSMutableDatadata];
//当服务器响应时,data开辟空间,接下来服务器返回数据

}

当接收服务器返回的数据时触发,返回的可能是资源片段

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

  拼接数据   

    [self.dataappendData:data];

} 

当服务器返回所有数据时触发,数据返回完毕

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {   


    self.data;//就是服务器返回的所有数据   

        解析,获得请求数据 

 NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:self.dataoptions:NSJSONReadingMutableContainerserror:nil];

} 


二.异步GET请求方式 

    1.将网址初始化成OC字符串对象
    NSString *urlString = [NSString stringWithFormat:@"http://image.zcool.com.cn/56/13/1308200901454.jpg];
    2.如果网址中存在中文,进行URLEncode(没有则不需要)   

NSString *newUrl = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];   

    3.构建网络URL,NSURL   

NSURL *url = [NSURLURLWithString:newUrl];   

    4.创建网络请求   

NSURLRequest *request = [NSURLRequestrequestWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalCacheDatatimeoutInterval:10];
    5.异步连接(协议代理)
[NSURLConnectionconnectionWithRequest:requestdelegate:self];

    6.服从协议,并且实现协议中的方法(和异步POST一样)


  三.同步GET请求方式


    1.将网址初始化成OC字符串对象    

NSString *urlString = [NSString stringWithFormat:@"%@?query=%@&region=%@&output=json&ak=6E823f587c95f0148c19993539b99295",kBusinessInfoURL,@"银行",@"济南"];       

   2.如果网址中存在中文,进行URLEncode   

NSString *newUrl = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];   

   3.构建网络URL,NSURL   

NSURL *url = [NSURLURLWithString:newUrl];   

   4.创建网络请求  

NSURLRequest *request = [NSURLRequestrequestWithURL:urlcachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:10];   

    5.同步连接   

NSURLResponse *response =nil;   

NSError *error =nil;   

NSData *data = http://www.mamicode.com/[NSURLConnectionsendSynchronousRequest:requestreturningResponse:&responseerror:&error];
  6.解析,获取请求到的数据 

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];


四.同步POST请求方式
    1.根据网址初始化OC字符串对象    

NSString *urlString = [NSStringstringWithFormat:@"%@",kVideoURL];   

2.创建NSURL对象   

NSURL *url = [NSURLURLWithString:urlString];   

3.创建请求   NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];  

4.创建参数字符串对象   NSString *parmStr = [NSStringstringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];   

5.将字符串转为NSData对象   

NSData *parmData = http://www.mamicode.com/[parmStr>dataUsingEncoding:NSUTF8StringEncoding];   

6.设置请求体   

[request setHTTPBody:parmData];  

7.设置请求方式(POST)   

[request setHTTPMethod:@"POST"];  

8.同步连接  

NSData *data = http://www.mamicode.com/[NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerror:nil];   

9.解析,获得请求数据   

NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

 

常见从网络上请求数据流程