在网络请求中,HTTP网络请求使用的最多,不管是获取文本还是获取二进制数据,亦或是将数据提交到服务器上。HTTP请求使用起来最为简单,HTTP请求类型分为好几种,例如:GET,POST,PUT,DELETE。这其中最为常见的两种形式就是GET和POST。
GET是用来从服务器上获得数据的请求方式。
同步请求的步骤如下:
- 创建NSURL
- 通过NSURL创建NSURLRequest
- 建立NSURLConnection发送同步请求
- 数据完成之后进行处理
1.创建NSURL
//利用UIButton创建一个方法
- (IBAction)synchronizedGet:(UIButton *)sender{
NSLog(@"同步get");
NSString *urlString = @"https://api.weibo.com/2/statuses/public_timeline.json?access_token=2.00zMf9ND9ip3KCc14c03c2900L6tAc";
//编码
urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:urlString];
}
2.通过NSURL创建NSURLRequest请求
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
3.使用NSURLConnection 类和服务器连接,这个是同步过程
NSURLResponse *httpResponse;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&httpURLResponse error:&error];
4.数据完成之后进行处理
//JSON数据格式解析,利用系统提供的API进行JSON数据解析
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
//1.直接用网上下载的数据
NSDictionary *dic = [dictionary[@"statuses"] objectAtIndex:0];
NSString *text = dic[@"text"];
self.textView.text = text;
//2.创建一个WeiBoModel类(MVC模式,这里相当于创建一个model)
//WeiBoModel类中有以下属性
@property (nonatomic,strong)NSArray *statuses;
@property (nonatomic,strong)NSNumber *hasvisible;
@property (nonatomic,strong)NSNumber *previous_cursor;
@property (nonatomic,strong)NSNumber *next_cursor;
@property (nonatomic,strong)NSNumber *total_number;
@property (nonatomic,strong)NSNumber *interval;
//创建一个方法,传入一个字典,通过model对象设置其属性
- (id)initWithDictionary:(NSDictionary *)dictionary;
//方法的实现
- (id)initWithDictionary:(NSDictionary *)dictionary{
if (self = [super init]) {
[self setValuesForKeysWithDictionary:dictionary];
}
return self;
}
//JSON数据格式解析,利用系统提供的API进行JSON数据解析
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
//创建一个model
WeiBoModel *model = [[WeiBoModel alloc] initWithDictionary:dictionary];
NSString *text = [model.statuses[0] objectForKey:@"text"];
self.textView.text = text;