AFN同步异步请求

异步请求:

-(BOOL)getOnlyKey1
{
    NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

    __block bool isTrue = false;

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
    NSString *urlstr = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"];
    NSURL *url = [NSURL URLWithString:urlstr];
    NSDictionary *dic = @{@"imei":myUUIDStr,@"av":AppVersion};
    [manager POST:urlstr parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) {
        MyLog(@"%@", operation.responseString);
        NSRange range = [operation.responseString rangeOfString:@"\"msg\":\"0\""];
        if (range.location != NSNotFound) {
            isTrue = true;
        }
        if (!isTrue) {
            SHOWALERT(@"错误", @"您需要联系开发人员");
        }

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        MyLog(@"返回失败结果:%@", error.localizedFailureReason);
        SHOWALERT(@"错误", @"请求开发人员服务器失败");
        isTrue = true;
    }];
    return  isTrue;
}

同步请求:

-(BOOL)getOnlyKey2
{
    NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    BOOL isTrue = false;
    NSString *urlstr = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"];
    NSURL *url = [NSURL URLWithString:urlstr];
    NSMutableURLRequest *urlrequest = [[NSMutableURLRequest alloc]initWithURL:url];
    urlrequest.HTTPMethod = @"POST";
    NSString *bodyStr = [NSString stringWithFormat:@"imei=%@&av=%@",myUUIDStr, AppVersion];
    NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
    urlrequest.HTTPBody = body;
    AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlrequest];
    requestOperation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
    [requestOperation start];
    [requestOperation waitUntilFinished];
    MyLog(@"%@",requestOperation.responseString);
    NSRange range = [requestOperation.responseString rangeOfString:@"\"msg\":\"0\""];
    if (range.location != NSNotFound) {
        isTrue = true;
    }
    if (!isTrue) {
        SHOWALERT(@"错误", @"您需要联系开发人员");
    }
    return  isTrue;
}

原生态的同步请求:

-(BOOL)getOnlyKey
{
    NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

    //应用版本号
    NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
    NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];

    NSString *urlString = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"];
    NSURL *url = [NSURL URLWithString:urlString];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setHTTPMethod:@"POST"];
    NSString *bodyStr = [NSString stringWithFormat:@"imei=%@&av=%@",myUUIDStr, versionNum];
    //将nstring转换成nsdata
    NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
    //MyLog(@"body data %@", body);
    [request setHTTPBody:body];
    NSURLResponse *response = nil;
    NSError *error = nil;
    //第二,三个参数是指针的指针,所有要用取址符,这个方法是同步方法。同步操作没有完成,后面的代码不会执行。
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    //    NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    //    MyLog(@"返回结果是:%@", str);

    if (error == nil) {  //接受到数据,表示工作正常
        NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        MyLog(@"%@",str);
        NSRange range = [str rangeOfString:@"\"msg\":\"0\""];
        if (range.location != NSNotFound) {
            return true;
        }else{
            return false;
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错鸟"
                                                            message:@"您需要联系项目开发人员"
                                                           delegate:nil
                                                  cancelButtonTitle:@"确定"
                                                  otherButtonTitles:nil];
            [alert show];
        }
    }

    if(error != nil || response == nil)
    {
        return false;
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误"
                                                        message:@"登陆失败,网络不稳定"
                                                       delegate:nil
                                              cancelButtonTitle:@"确定"
                                              otherButtonTitles:nil];
        [alert show];

    }

    return false;
}
时间: 2024-10-08 06:53:09

AFN同步异步请求的相关文章

Springmvc中 同步/异步请求参数的传递以及数据的返回

注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 (1).使用基本类型,或引用类型进行接受: @RequestMapping(value="/select") PublicString  select(String name,int age,Model model){ // 这样这里的name,age 就是我们前台传递的参数,也是我们Ja

libcurl的封装,支持同步异步请求,支持多线程下载,支持https

最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以在Linux底下的交叉编译举例.libcurl源码下载: http://curl.haxx.se/download.html配置libcurl支持https和zlib压缩,必须需要openssl和zlib库openssl库源码下载: http://www.openssl.org/source/.下载

NSURLConnection同步异步请求

以百度图片为例: 先在xib文件中添加一个UIImageView控件 一:同步方法 1 //获取URL 2 NSURL *url=[NSURL URLWithString:@"http://pic1a.nipic.com/2008-11-13/200811133748109_2.jpg"]; 3 //发送请求 4 NSURLRequest *request=[NSURLRequest requestWithURL:url]; 5 //发起同步请求 6 NSData *data=[NSU

Ajax同步异步请求

一.什么是同步请求:(false)       同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完自己的事务,下一个人才能接着办.也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态. 二.什么是异步请求:(true)       异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加

从零开始学 Web 之 Ajax(五)同步异步请求,数据格式

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN:https://blog.csdn.net/lvonve/ 在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目.现在就让我们一起进入 Web 前端学习的冒险之旅吧! 一.同步请求与异步

jQuery基础(Ajax,load(),getJSON(),getScript(),post(),ajax(),同步/异步请求数据)

1.使用load()方法异步请求数据 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为: load(url,[data],[callback]) 参数url为加载服务器地址,可选项data参数为请求时发送的数据,callback参数为数据请求成功后,执行的回调函数. 2.使用getJSON()方法异步加载JSON格式数据 使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数据,并对获取的数据进行解析,显示在页面中,它的

简单的 同步 异步 请求

#import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UITextView *textView; @property(nonatomic,copy)NSString *BASE_URL; @property(nonatomic,copy)NSString *BASE_URL1_PARAM; @property(nonatomic,strong)NSMutableData *m

IOS中get同步异步请求与post同步异步请求

demo //  Created by apple on 15/1/6. //  Copyright (c) 2015年 huweibin. All rights reserved. // #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UITextView *textView; @property(nonatomic,copy)NSString *BASE_URL;

iOS AFNetWorking下同步异步请求

//阻塞 - (User *)findUser:(NSNumber *)userID { NSString *url = [NSString stringWithFormat:@"%@/s/account/find-user/",ServerBaseURL]; NSMutableDictionary *requestParms = [[NSMutableDictionary alloc] init]; [requestParms setObject:userID forKey:@&qu