zoukankan      html  css  js  c++  java
  • ASIHTTPRequest框架使用总结系列之阿堂教程2(同步请求)

    本篇开始,阿堂结合一些具体代码来说明。在ASIHTTPRequest框架中,与http请求相关的类有ASIHTTPRequest  和 ASIFormDataRequest,其中最常用的是 ASIHTTPRequest ,ASIFormDataRequest 是ASIHTTPRequest  的子类,可以发送html类似的表单数据,也可以上传数据,默认采用其它httpy请求方式。它们都可以进行异步或同步请求。

     
          从性能和用户体验来说,阿堂是不建议用同步方式的,建议用异步方式。就是说在主线程中一般要用异步方式,在子线程中要用同步方式。不过从技术学习的角度,这里阿堂还是要介绍get和post 的同步方式的写法。
     
    一.实现get同步请求
     
    代码一般写法如下
     

    -(void)startRequest

    {   

        NSString *strURL = [[NSString alloc]initWithFormat:@"http://www.crazyit.com/service/mynotes/webservice.php?email=%@&type=%@&action=%@",@"heyitang@qq.com",@"JSON",@"query"];

        

    NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];

        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

        [request startSynchronous];  //同步请求 

        NSLog(@"请求完成...");

        NSError *error = [request error];

        

    //如果错误对象不为空,说明这个请求过程出现了错误 

        if (!error) {

            //NSString *response = [request responseString];

            NSData *data  = [request responseData];

    //返回值为NSData,这种类型适合 NSJSONSerialization解析 

    //如果想返回字符串,可以用 NSString *data  = [request responseString];

            NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:dataoptions:NSJSONReadingAllowFragments error:nil];

            [self reloadView:resDict];

        }

    }

     

    //重新加载表视图

    -(void)reloadView:(NSDictionary*)res

    {

        NSNumber *resultCodeObj = [res objectForKey:@"ResultCode"];

        if ([resultCodeObj integerValue] >=0)

        {

            self.listData = [res objectForKey:@"Record"];

            [self.tableView reloadData];

        } else {

            NSString *errorStr = [resultCodeObj errorMessage];

            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"错误信息"

                                                                message:errorStr

                                                               delegate:nil

                                                      cancelButtonTitle:@"OK"

                                                      otherButtonTitles: nil];

            [alertView show];

        }

        

        

    }

     
    使用ASIHTTPRequest类时,需要引入头文件 ASIHTTPRequest.h
     
    二.实现post同步请求
     

    -(void)startRequest

    {   

        NSString *strURL = @"http://www.crazyit.com/service/mynotes/webservice.php";

        

    NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]];

        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

        [request setPostValue:@"heyitang@qq.com" forKey:@"email"];

        [request setPostValue:@"JSON" forKey:@"type"];

        [request setPostValue:@"query" forKey:@"action"];

        

        [request startSynchronous];

        NSLog(@"请求完成...");

        

        NSError *error = [request error];

        

        if (!error) {

            //NSString *response = [request responseString];

            NSData *data  = [request responseData];

            NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:dataoptions:NSJSONReadingAllowFragments error:nil];

            [self reloadView:resDict];

        }

    }

    //重新加载表视图

    -(void)reloadView:(NSDictionary*)res

    {

        NSNumber *resultCodeObj = [res objectForKey:@"ResultCode"];

        if ([resultCodeObj integerValue] >=0)

        {

            self.listData = [res objectForKey:@"Record"];

            [self.tableView reloadData];

        } else {

            NSString *errorStr = [resultCodeObj errorMessage];

            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"错误信息"

                                                                message:errorStr

                                                               delegate:nil

                                                      cancelButtonTitle:@"OK"

                                                      otherButtonTitles: nil];

            [alertView show];

        }

        

        

    }

  • 相关阅读:
    EasyUI 清空表格
    【21年01月DW打卡】Task02
    【BUG12】排查解决一个锁超时 "MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction" 的SQL问题
    【20年12月DW打卡】joyful-pandas
    【21年01月DW打卡】Task01
    【12月DW打卡】joyful-pandas
    【12月DW打卡】joyful-pandas
    【Pandas】resample重采样中的周‘W’按周日开始为一周('W'的频率偏移默认为‘right’、使用label = 'left' 重设)+ 常用freq的别名/注释
    【12月DW打卡】joyful-pandas
    【12月DW打卡】joyful-pandas
  • 原文地址:https://www.cnblogs.com/lisa090818/p/4249735.html
Copyright © 2011-2022 走看看