`
wenxin2009
  • 浏览: 322977 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ios同步、异步请求

    博客分类:
  • ios
 
阅读更多

以下是运用原生态网络请求,ASIHTTP框架对它进行了封装,用法大同小异。

1、同步请求

- (void) initRequestData : (RequestVO *) requestParam{
    NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];
    NSMutableDictionary *directory = [[NSMutableDictionary alloc]init];
    NSString *paramJson;
    NSMutableString *urlStr = [[NSMutableString alloc] initWithString:REQUEST_URL];
    [directory setValue:requestParam.className forKey:@"className"];
    [directory setValue:requestParam.methodName forKey:@"methodName"];
    [paramDic setValue:requestParam.specialCode forKey:@"specialCode"];
    [paramDic setValue:requestParam.start forKey:@"start"];
    [paramDic setValue:requestParam.end forKey:@"end"];
    [directory setValue:paramDic forKey:@"parameter"];
    if ([NSJSONSerialization isValidJSONObject:directory]) {
        NSError *error ;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:directory options:NSJSONWritingPrettyPrinted error:&error];
        paramJson =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        paramJson = [paramJson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    }
    [urlStr appendString:paramJson];
    NSURL *url = [NSURL URLWithString:urlStr];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:url];
    [request setHTTPMethod:@"POST"];
    NSHTTPURLResponse *response;
    NSError *error ;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    
    NSDictionary *dataDictory = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    NSLog(@"dataDictory : %@",[dataDictory description]);
    }
}

 2、异步请求

@interface CatalogViewController : UIViewController<NSURLConnectionDataDelegate>

@property (strong,nonatomic) NSMutableData *receivedData;
@end


//
//  CatalogViewController.m
//  IpadLisShow
//
//  Created by Dwen on 13-1-21.
//  Copyright (c) 2013年 Dwen. All rights reserved.
//

#import "CatalogViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface CatalogViewController ()

@end

@implementation CatalogViewController
@synthesize receivedData;

//初始化请求数据
- (void) initRequestData : (RequestVO *) requestParam{
    NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];
    NSMutableDictionary *directory = [[NSMutableDictionary alloc]init];
    NSString *paramJson;
    NSMutableString *urlStr = [[NSMutableString alloc] initWithString:REQUEST_URL];
    [directory setValue:requestParam.className forKey:@"className"];
    [directory setValue:requestParam.methodName forKey:@"methodName"];
    [paramDic setValue:requestParam.specialCode forKey:@"specialCode"];
    [paramDic setValue:requestParam.orderPa forKey:@"orderPa"];
    [paramDic setValue:requestParam.sort forKey:@"sort"];
    [paramDic setValue:requestParam.start forKey:@"start"];
    [paramDic setValue:requestParam.end forKey:@"end"];
    [directory setValue:paramDic forKey:@"parameter"];
    NSLog(@"[directory description] :%@",[directory description]);
    if ([NSJSONSerialization isValidJSONObject:directory]) {
        NSError *error ;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:directory options:NSJSONWritingPrettyPrinted error:&error];
        paramJson =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        paramJson = [paramJson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    }
    [urlStr appendString:paramJson];
    NSURL *url = [NSURL URLWithString:urlStr];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:url];
    [request setHTTPMethod:@"POST"];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if (connection) {
        receivedData = [[NSMutableData alloc] init];
    }else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"服务器连接异常" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
}

#pragma connection
//接收响应
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    [receivedData setLength:0];
}

//接收到数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [receivedData appendData:data];
}

//数据加载完成
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSError *error ;
    NSDictionary *dataDictory = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error];
    //    NSLog(@"dataDictory : %@",[dataDictory description]);
    if (NULL != dataDictory) {
        //拍品信息
        
    }else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"该拍品无数据" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    NSLog(@"Error : %@",error);
}

@end

 

 

分享到:
评论

相关推荐

    iOS 同步异步网络请求

    这个文件名可能代表一个示例代码,可能包含了如何在iOS中实现POST和GET同步/异步请求的代码实例。通常,这样的示例会涵盖创建URL请求对象、设置请求头、配置请求体(对于POST),以及使用`NSURLSession`或第三方库...

    ios同步、异步、get与post请求介绍

    总结来说,iOS开发者在处理网络请求时,需要根据实际需求选择同步或异步请求,以及GET或POST方法。同步请求适用于数据量小且不影响用户交互的场景,而异步请求则更适用于需要保持用户界面流畅的情况。GET请求简单但...

    iOS之同步请求、异步请求、GET请求、POST请求

    在iOS开发中,网络请求是应用与服务器交互的重要方式,主要分为同步请求和异步请求,同时HTTP协议提供了两种常见的请求方法:GET和POST。理解这些概念及其在iOS中的实现对于构建用户友好的应用程序至关重要。 1. **...

    全面解析iOS中同步请求、异步请求、GET请求、POST请求

    总之,理解同步和异步请求以及GET和POST请求的区别对于iOS开发者来说至关重要。根据具体需求选择合适的请求方式,可以优化用户体验并确保数据的安全传输。在实际开发中,应当充分利用异步请求的优势,同时考虑数据...

    iOS网络请求 post同步异步封装demo

    通过对各位技术大牛博客的学习,自己试着做了一个post同步和异步的网络请求封装类,具体解析还没有写进去,不过简单的网络请求是够用了,其中肯定会有很多不合适的地方,慢慢学习慢慢完善。 1.工程中导入...

    iOS系统同步异步下载 ASI同步异步下载图片源代码

    本文将深入探讨iOS系统中的同步与异步下载,以及如何使用ASIHTTPRequest库进行这两种下载方式的实现。 首先,我们来看同步下载。同步下载是指在当前线程中执行下载任务,直到下载完成才会继续执行后面的代码。这种...

    iOS中使用NSURLConnection处理HTTP同步与异步请求

    在iOS应用开发中,虽然`NSURLSession`现在是主要的网络通信接口,但了解`NSURLConnection`的使用仍有其价值...无论是同步还是异步请求,`NSURLConnection`都能提供灵活的网络交互方式,尤其是在需要兼容老版本系统时。

    IOS开发中异步网络请求上实现同步逻辑

    然而,在某些场景下,我们可能需要在所有异步请求完成后执行一些同步逻辑,例如批量数据上传成功后进行统一处理。本文将探讨如何在iOS中实现这一目标,主要关注三个方面:循环异步拼组、信号量异步转同步以及...

    iOS异步加载图片 (需要至少12个字的名称,过分!)

    总结来说,iOS异步加载图片涉及到多线程编程、网络请求、图片处理和UI更新等多个方面。合理运用异步加载策略和第三方库,可以优化应用性能,提高用户体验。在实际开发中,应注重代码的初始化和错误处理,避免因为这...

    同步与异步

    对于同步请求,可以使用`startSynchronous`方法,而对于异步请求,可以使用`startAsynchronous`。这个库虽然已不再更新,但在很多老项目中仍然被广泛使用,因其简单易用的API和良好的文档。 NSURL是苹果的...

    iOS当多个网络请求完成后执行下一步的方法详解

    如果这些请求是同步的,那么用户体验将会受到影响,因为页面需要等待所有数据加载完毕后才能显示。为了解决这个问题,通常我们会使用异步网络请求,让它们并发执行,但如何确保所有请求完成后才执行后续的UI更新或...

    iOS应用中发送HTTP的get请求以及HTTP异步请求的方法

    相对于同步请求,异步请求不会阻塞主线程,允许用户在等待响应的同时继续执行其他操作。下面展示了一个使用`NSURLConnection`进行异步请求的示例: ```objc // 1. 初始化NSMutableData对象用于存储接收到的数据 ...

    改进版 iOS 网络请求类库ASIHTTPRequest

    - 异步请求使用 `-startAsynchronous`,在后台线程执行,主线程处理 UI。 - 同步请求使用 `-startSynchronous`,通常避免在主线程使用,以免阻塞用户界面。 3. **回调处理**: - `-setCompletionBlock:` 和 `-...

    ios-网络请求工作.zip

    8. **请求的异步和同步**:AFNetworking支持异步请求,这在UI交互中非常重要,避免了阻塞主线程导致应用卡顿。同时,也可以根据需求选择同步请求,但要注意同步请求在非后台线程中可能导致UI冻结。 9. **网络请求的...

    swift-基于AFNetworking封装包括多图片同步异步上传下载错误上报输出请求log等功能

    标题中的"swift-基于AFNetworking封装包括多图片同步异步上传下载错误上报输出请求log等功能"正是这样一个项目,它旨在为Swift开发者提供一个高效、易用的网络请求解决方案。 首先,我们要了解这个封装的主要功能:...

    解决ajax请求后台,有时收不到返回值的问题

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现

    同步和异步的NSOperation的Demo

    4. 异步执行:如果操作需要进行网络请求或耗时计算,通常会实现异步执行。这可以通过在NSOperation的`main`方法中启动一个GCD异步队列或使用URLSession来完成。 5. 回调处理:异步操作完成后,可能需要在回调中更新...

Global site tag (gtag.js) - Google Analytics