美文网首页
POST和GET请求数据的流程

POST和GET请求数据的流程

作者: 蓝桥小破车 | 来源:发表于2016-05-26 21:48 被阅读1363次

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 = [NSString stringWithFormat:@"%@",kVideoURL]; 

2.创建NSURL对象 

NSURL *url = [NSURL URLWithString:urlString]; 

3.创建请求 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; 

4.创建参数字符串对象

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

5.将字符串转为NSData对象 

NSData *parmData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];

 6.设置请求体 

[request setHTTPBody:parmData]; 

7.设置请求方式(POST)

 [request setHTTPMethod:@"POST”];

8.异步连接(协议代理) 

[NSURLConnection connectionWithRequest:request delegate:self];

9.遵从<NSURLConnectionDataDelegate>协议

10.实现协议中方法

当服务器响应时触发

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

self.data = [NSMutableData data];

//当服务器响应时,为data开辟空间,接下来服务器返回数据

}

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

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

拼接数据

[self.data appendData:data];

}

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

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

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

解析,获得请求数据

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

}


二.异步GET请求方式

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

NSString *urlString = [NSString stringWithFormat:@"http://image.zcool.com.cn/56/13/1308200901454.jpg”];

2.如果网址中存在中文,进行URLEncode(没有则不需要)

NSString *newUrl = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

3.构建网络URL对,NSURL

NSURL *url = [NSURL URLWithString:newUrl];

4.创建网络请求

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy: NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];

5.异步连接(协议代理)

[NSURLConnection connectionWithRequest:request delegate:self];

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


三.同步GET请求方式

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

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

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

NSString *newUrl = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

3.构建网络URL对,NSURL

NSURL *url = [NSURL URLWithString:newUrl];

4.创建网络请求

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];

5.同步连接

NSURLResponse *response = nil;

NSError *error = nil;

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

6.解析,获取请求到的数据

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


四. 同步POST请求方式

1.根据网址初始化OC字符串对象

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

2.创建NSURL对象

NSURL *url = [NSURL URLWithString:urlString];

3.创建请求 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

4.创建参数字符串对象 

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

5.将字符串转为NSData对象

NSData *parmData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];

6.设置请求体

[request setHTTPBody:parmData];

7.设置请求方式(POST)

[request setHTTPMethod:@"POST"];

8.同步连接

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

9.解析,获得请求数据

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

相关文章

网友评论

      本文标题:POST和GET请求数据的流程

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