MKNetworkKit関数Demoの使用

3985 ワード

一、MKNetworkKitの導入
1,MKNetworkKitのプロジェクトディレクトリに追加します.
2,追加したCFNetwork.Framework,SystemConfiguration.framework,Security.framework,ImageIO.Framework.
3,PCHファイルはMKNetworkKit.hを含む
4 iOSを構築している場合は、NSAlert+MKNetworkKitAdditions.hファイルを削除します.
5.構築中のMacの場合、UIalertView+MKNetworkKitAdditions.hファイルを削除します.
二、MKNetworkKit類
1,MKNetworkOperation
2,MKNetworkEngine
3,補助クラス(apple'Reachability)and categories,ネットワークおよび拡張
1.1-(MKStoreKit追加アプリケーション内購入)MKNetworkKitを使用するには、MKNetworkOperation MKNetworkEngineの2つのクラスから知る必要があります.MKNetworkOperationはASIHttpRequestと似ています.これはNSOperationのサブクラスで、リクエストとレスポンスクラスをパッケージします.アプリケーション内のリクエストタイミングを管理するためのMKNetworkOperationを作成します.
2.1-MKNetworkEngineは、appのネットワークキューの管理を担当する偽の単一クラスです.したがって、簡単なリクエストの場合は、MKNetworkEngineのメソッドを直接使用する必要があります.より複雑なカスタマイズでは、それを継承する必要があります.各MKNetworkEngineのサブクラスには、サーバの接続状況を通知する独自のReachabilityオブジェクトがあります.特別なRESTウェアとして考慮できます.プロセッサ要求は、MKNetworkEngineを継承することによって行われます.擬似シングル・インスタンス・モードであるため、各サブクラスの要求は、唯一のキューで送信されます.

MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"192.168.2.176:9502/api"  
customHeaderFields:nil];  
MKNetworkOperation *op = [engine operationWithPath:@"login.php?userid=admin&userpwd=123" params:nil httpMethod:@"GET"];  
[op onCompletion:^(MKNetworkOperation *operation){  
    NSLog(@"request string: %@",[op responseString]);  
}   
onError:^(NSError *error){  
  
}];  
[engine enqueueOperation:op];

//post
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];  
  [dic setValue:@"admin" forKey:@"username"];  
  [dic setValue:@"123" forKey:@"password"];  
    
  MKNetworkOperation *op = [engine operationWithPath:@"user.do" params:dic httpMethod:@"POST"];  
    
  [op onCompletion:^(MKNetworkOperation *operation) {  
      NSLog(@"post response string :%@",[op responseString]);                  
  } onError:^(NSError *error) {  
      DLog(@"%@", error);  
  }];  
    
  [engine enqueueOperation:op];

解析json

//          
static MKNetworkEngine *engine;
+(MKNetworkEngine *)defaultEngine{
    if (engine == nil) {

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            engine = [[MKNetworkEngine alloc] initWithHostName:@"m.weather.com.cn"
customHeaderFields:nil];//initWithHostName      ,   http//,       

        });
    }
    return engine;
}

MKNetworkOperation *operation = [engine operationWithPath:@"/data/101010100.html" params:nil httpMethod:@"GET"];
//operationWithPath         GET  

[operation addCompletionHandler:^(MKNetworkOperation *completedOperation) {

//********   json     json

      id json = [completedOperation responseJSON];     //      json       
      NSDictionary *weatherDic = (NSDictionary *)json;//json        ,     json   dictionary 

      NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];

      NSString *city = [weatherInfo objectForKey:@"city"];
      NSString *date_y = [weatherInfo objectForKey:@"date_y"];
      NSString *fl1 = [weatherInfo objectForKey:@"fl1"];
      NSString *fl2 = [weatherInfo objectForKey:@"fl2"];

      self.textlable.text = [NSString stringWithFormat:@"%@ 
%@
%@
%@",city,date_y,fl1,fl2]; // // NSLog(@"%@",[completedOperation responseJSON]); // json } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) { }]; [engine enqueueOperation:op]; }