网络连接中用到的类:
一.Reachability
1.添加 Reachability 的.h和.m文件,再添加SystemConfiguration.framework。
2.Reachability中定义了三种网络状态:
typedef Num{
NotReachable = 0, //无连接
ReachableViaWiFi, //使用3G/GPRS网络
ReachableViaWWAN //使用WiFi网络
}NetworkStatus;3.示例:
Reachability *reachability = [Reachablity reachabilityWithHostName:@"www.baidu.com"];
switch([reachabilityStatus]){
case NotReachable:
//TODO
break;
case ReachableViaWiFi:
//TODObreak;
case ReachableViaWWAN:
//TODObreak;
}4.检查当前网络环境
程序启动时,如果想检测可用的网络环境,可以像这样来使用
//是否wifi
+ (BOOL)isEnableWIFI
{
return ([[Reachability reachabiliyForLocalWIFI] currentReachabilityStatus] != NotReachable);
}
//是否3G
+ (BOOL)isEnable3G
{
return ([[Reachability reachabiliyForInternetConnetion] currentReachabilityStatus] != NotReachable);
}
示例:
- (void)viewWillAppear:(BOOL)animated
{ if (([Reachability reachabiliyForInternetConnetion].currentReachabilityStatus == NotReachable) && [Reachability reachabiliyForLocalWIFI].currentReachabilityStatus == NotReachable))
{
self.navigationItem.hidesBackButton = YES;
[self.navigationItem setLeftBarButtonItem:nil animated:NO];
}
}
5.链接状态的实时通知
实时检查,持续状态发生变化时,需要及时地通知用户:
// MyAppDelegate.h
#import " Reachability "
@interface MyAppDelegate:NSObject<UIApplicationDelegate>
{
}
@property NetworkStatus remoteHostStatus;
@end
//MyAppDelegate.m
#import " MyAppDelegate.h "
@implementation MyAppDelegate
@synthesize remoteHostStatus;
// 更新网络状态
- ( void)updateStatus
{
self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];
}
// 通知网络状态
- ( void)reachabilityChanged:(NSNotification *)note
{
[self updateStatus];
if (self.remoteHostStatus == NotReachable)
{
UIAlert *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString( @" AppName ",nil)
message: NSLocalizedString ( @" NotReachable ",nil);
delegate:nil cancelButtonTitle: @" OK "
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
// 程序启动器,启动网络监视
- ( void)applicationDidFinishLaunching:(UIApplication *)application
{
// 设置网络监测的站点
[[Reachability sharedReachability] setHostName: @" www.baidu.com "];
[[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];
// 设置网络状态变化时的通知函数
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)
name: @" kNetworkReachabilityChangedNotification " object:nil];
[self updateStatus];
}
- ( void)dealloc
{
// 删除通知对象
[[NSNotificationCenter defaultCenter] removeObserver:self];
[window release];
[super dealloc];
}
// MyAppDelegate.h
#import " Reachability "
@class Reachability;
@interface MyAppDelegate:NSObject<UIApplicationDelegate>
{
Reachability *hostReach;
}
@end
// MyAppDelegate.m
#import " MyAppDelegate.h "
@implementation MyAppDelegate
// 通知网络状态
- ( void)reachabilityChanged:(NSNotification *)note
{
Reachability *currentReach = [note object];
NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);
NetworkStatus status = [currentReach currentReachabilityStatus];
if (status == NotReachable)
{
UIAlert *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString( @" AppName ",nil)
message: NSLocalizedString ( @" NotReachable ",nil);
delegate:nil cancelButtonTitle: @" YES "
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
// 程序启动器,启动网络监视
- ( void)applicationDidFinishLaunching:(UIApplication *)application
{
// ....
// 监测网络情况
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)
name: @" kNetworkReachabilityChangedNotification " object:nil];
hostReach = [[Reachability reachabilityWithHostName: @" www.baidu.com "] retain];
// hostReach startNotifer];
// ...
}
二、其他常用的类。
1.NSURL
2.NSURLRequest
3.NSMutableURLRequest 是NSURLRequest的子类,可以设置一些请求参数
4.NSURLResponse
5.NSError