pragma mark – get同步
(void)actionRightItem:(UIBarButtonItem *)button
{
// 创建网址对象
NSString *oldUrl = @”http://api.map.baidu.com/place/v2/search?query=麦当劳®ion=新乡&output=json&ak=6E823f587c95f0148c19993539b99295”;// 如果请求的网址含中文,必须重新编码为NSUTF8StringEncoding
NSString *newUrl = [oldUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];// 将字符串转换成url
NSURL *url = [NSURL URLWithString:newUrl];
// 发出一个请求
// CachePolicy缓存策略 一般选默认
// 1> NSURLRequestUseProtocolCachePolicy = 0, 默认的缓存策略, 如果缓存不存在,直接从服务端获取。
2> NSURLRequestReloadIgnoringLocalCacheData = 1, 忽略本地缓存数据,直接请求服务端.
3> NSURLRequestIgnoringLocalAndRemoteCacheData = 4, 忽略本地缓存,代理服务器以及其他中介,直接请求源服务端.
4> NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData
5> NSURLRequestReturnCacheDataElseLoad = 2, 有缓存就使用
6> NSURLRequestReturnCacheDataDontLoad = 3,确定当前无网络时使用
7> NSURLRequestReloadRevalidatingCacheData = 5, 缓存数据必须得得到服务端确认有效才使用
// timeoutInterval 请求超时时间
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
// 默认是get请求NSURLRequest 如果设置,需要的是可变请求NSMutableURLRequest
// 设置请求类型
[request setHTTPMethod:@”GET”];// 建立链接
// 接收二进制数据
// Response: 描述服务器返回的数据
// error: 描述链接错误的信息
// 如果不需要,可以直接填nil
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@”%@”, data);
NSLog(@”%@”, response);// 转换成数据
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil];
NSLog(@”%@”, dataDic);
}
// get异步(void)actionLeftItem:(UIBarButtonItem *)button
{
// 如果网址有中文 需要重新编码
NSString *newUrl = [@”http://api.map.baidu.com/place/v2/search?query=麦当劳®ion=新乡&output=json&ak=6E823f587c95f0148c19993539b99295” stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];// 利用网址字符串创建一个网址对象 利用网址对象创建一个请求 利用请求创建一个链接
NSURL *url = [NSURL URLWithString:newUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:30.0];// 设置请求类型
[request setHTTPMethod:@”GET”];// 注意:异步要遵循代理协议
// 遵守的协议名字NSURLConnectionDataDelegate
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
// 开启异步请求
[connection start];
}
pragma mark – NSURLConnectionDataDelegate —
(void)connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse )response
{
// 连接成功触发,在这个方法中初始化可变data
NSLog(@”接收到服务器数组”);
}(void)connection:(NSURLConnection )connection didReceiveData:(NSData )data
{
// 在此处,拼接data
// 可执行多次
NSLog(@”接收数据时触发, 说明 链接成功”);
}(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// 该方法触发,证明data已经完整了,可以分析数据
NSLog(@”完成加载”);
}(void)connection:(NSURLConnection )connection didFailWithError:(NSError )error
{
NSLog(@”查看错误信息”);
}