1.NSURLConnection
NSString *urlString = @"http:// + (请求字段)";
//url
NSURL *url = [NSURL URLWithString:urlString] ;
//request
NSURLRequest *request = [NSURLRequest requestWithURL:url] ;
//发送请求
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
//解析data
}] ;
*post*与*get*不同的是:*post*需要设置请求方式和请求体
request.HTTPMethod = @"POST" ;
request.HTTPBody = [@"cid_rel=207&page=1" dataUsingEncoding:NSUTF8StringEncoding] ;
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
//解析data
}] ;
NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error] ;
- 1.4代理请求的方式:
- 1.遵守
NSURLConnectionDataDelegate
协议。
- 2.实现
代理方法
//该方法当接收到返回数据时会被调用 , 在其中进行了数据容器的初始化操作:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"接收响应") ;
}
//该方法在接收数据过程中被多次调用 , 在其中会将接收到的数据传递进来:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"接收数据") ;
//NSMutableData *myData
[self.myData appendData:data] ;
}
//该方法在接收数据完成之后调用 , 在其中将接受到完整的数据转化为字符串进行了打印操作:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"数据接收完毕") ;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:self.myData options:NSJSONReadingMutableContainers error:nil] ;
NSLog(@"%@",dic) ;
}
2.NSURLSession
//session管理者
//share-->单例:
NSURLSession *session = [NSURLSession sharedSession] ;
//请求网络数据
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//解析data
}];
//发起网络请求
[task resume] ;
request.HTTPMethod = @"POST" ;
request.HTTPBody = [@"cid_rel=200&page=4" dataUsingEncoding:NSUTF8StringEncoding] ;
NSURLSession *session = [NSURLSession sharedSession] ;
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//解析数据data ;
//打印error ;
}] ;
//发起网络请求
[task resume] ;
愿编程让这个世界更美好
网友评论