• iOS—请求Web Service


    1、iOS SDK 同步GET请求

      NSString *strURL = [[NSString alloc] initWithFormat:@"http://www.51work6.com/service/mynotes/WebService.php?email=gs.654586026@qq.com&type=JSON&action=query"];
       strURL = [strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    
      NSURL *url = [NSURL URLWithString:strURL];
    	
      NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
        
        NSData *data  = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        
        NSLog(@"请求完成...");
        NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
        NSLog(@"resDict:%@",resDict);
    

    2、iOS SDK 异步GET请求

    /*
     * 开始请求Web Service
     */
    -(void)startRequest
    {
        
        NSString *strURL = [[NSString alloc] initWithFormat:@"http://www.weather.com.cn/adat/sk/101010100.html"];
        strURL = [strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        
    	NSURL *url = [NSURL URLWithString:strURL];
        
    	NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
        
        NSURLConnection *connection = [[NSURLConnection alloc]
                                       initWithRequest:request
                                       delegate:self];
        if (connection) {
            self.datas = [NSMutableData new];
        }
    }
    
    #pragma mark- NSURLConnection 回调方法
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        [self.datas appendData:data];
    }
    
    
    -(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error {
        
        NSLog(@"%@",[error localizedDescription]);
    }
    
    - (void) connectionDidFinishLoading: (NSURLConnection*) connection {
        NSLog(@"请求完成...");
        NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:self.datas options:NSJSONReadingAllowFragments error:nil];
        NSLog(@"dict:%@",dict);
    }
    

    iOS SDK POST请求

    /*
     * 开始请求Web Service
     */
    -(void)startRequest
    {
        
        NSString *strURL = @"http://www.51work6.com/service/mynotes/WebService.php";
        strURL = [strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        
        NSURL *url = [NSURL URLWithString:strURL];
        
        NSString *post = [NSString stringWithFormat:@"email=%@&type=%@&action=%@", @"gs.654586026@qq.com",@"JSON",@"query"];
        NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:postData];
        
        NSURLConnection *connection = [[NSURLConnection alloc]
                                       initWithRequest:request
                                       delegate:self];
        if (connection) {
            self.datas = [NSMutableData new];
        }
    }
    
    #pragma mark- NSURLConnection 回调方法
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        [self.datas appendData:data];
    }
    
    
    -(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error {
        
        NSLog(@"%@",[error localizedDescription]);
    }
    
    - (void) connectionDidFinishLoading: (NSURLConnection*) connection {
        NSLog(@"请求完成...");
        NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:self.datas options:NSJSONReadingAllowFragments error:nil];
    }
    

    GET方法是向指定资源发出请求,只用在读取数据。POST方法是向指定资源提交数据,请求服务器进行处理

    同步请求是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  
    异步请求是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

    MKNetworkKit框架 GET请求

    /*
     * 开始请求Web Service
     */
    -(void)startRequest
    {
        NSDictionary *parameter=@{@"format": @"2",@"cityname": @"南京",@"key": @"1174d1a31d33b1dacb69d15c7756f898"};
        
        MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"v.juhe.cn" customHeaderFields:nil];   //HostName不能加HTTP://
        MKNetworkOperation *op = [engine operationWithPath:@"/weather/index" params:parameter httpMethod:@"GET" ssl:NO];
        
        
        [op addCompletionHandler:^(MKNetworkOperation *operation) {
            
            NSLog(@"responseData : %@", [operation responseString]);  //显示中文,但输出无格式
            NSData *data  = [operation responseData];
            NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            
            NSLog(@"数据:%@",resDict);    //不显示中文,但输出有格式
            
        } errorHandler:^(MKNetworkOperation *errorOp, NSError* err) {
            NSLog(@"MKNetwork请求错误 : %@", [err localizedDescription]);
        }];
        [engine enqueueOperation:op];
        
    }
    

    MKNetworkKit框架  POST请求    待修改

    /*
     * 开始请求Web Service
     */
    -(void)startRequest
    {
        NSString *path = [[NSString alloc] initWithFormat:@"/weather/index"];
        
        NSMutableDictionary *param = [[NSMutableDictionary alloc] init];
        [param setValue:@"2" forKey:@"format"];
        [param setValue:@"苏州" forKey:@"cityname"];
        [param setValue:@"1174d1a31d33b1dacb69d15c7756f898" forKey:@"key"];
        
        
        MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"v.juhe.cn" customHeaderFields:nil];
        MKNetworkOperation *op = [engine operationWithPath:path params:param httpMethod:@"POST"];
        
        [op addCompletionHandler:^(MKNetworkOperation *operation) {
            
            NSLog(@"responseData : %@", [operation responseString]);
            NSData *data  = [operation responseData];
            NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            
            
            [self reloadView:resDict];
            
        } errorHandler:^(MKNetworkOperation *errorOp, NSError* err) {
            NSLog(@"MKNetwork请求错误 : %@", [err localizedDescription]);
        }];
        [engine enqueueOperation:op];
        
    }
    

      

     

  • 相关阅读:
    sql 事务
    GridView数据导入Excel
    图片对比度亮度调节函数
    在.NET(C#)中获取电脑名IP地址及当前用户名
    一个简单的存储过程
    通用海量数据库翻页
    Graphics
    sql 触发器
    DataTable中的数据导出Excel文件
    窗口渐变
  • 原文地址:https://www.cnblogs.com/saurik/p/4820007.html
Copyright © 2020-2023  润新知