网络请求数据(同步GET,异步GET)

////GET:将请求所需要传的参数,直接封装到URL中,缺点:1、不安全  2、url长度有限制,如果参数较多,会封装失败,导致无法请求

//POST:包含基础的url以及参数体,也就是说,参数跟url是分开的,比较安全且不用顾虑url的长度

//同步:当执行某个操作时,只有当其完全执行结束,才回去执行下面的操作,缺点:如果遇到耗时操作,会比较卡
//异步:多个任务同时执行

#import "ViewController.h"

#define BaseUrl @"http://www.haninfo.cc:2060/Login/LoginData.asmx/Login"
@interface ViewController ()<NSURLConnectionDelegate,NSURLSessionDataDelegate>{
     NSMutableData *_muData;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
    //8---调用同步GET
    [self synchronizeGET];
    //5*&*******调用异步GET
    [self asynchronizeGET];
}
//同步GET
-(void)synchronizeGET{
    //1---获取网络接口----//初始化一个包含参数的完整的字符串(接口地址)
    NSString * urlDtr = [NSString stringWithFormat:@"%@?sLogin=%@&sVerifyCode=%@&sPadId=%@",BaseUrl,@"yyj",@"",@""];
    //2---将接口字符串转换为url
    NSURL * url = [NSURL URLWithString:urlDtr];
    //3---发送URL请求-----//创建请求,第一个参数代表请求的地址,第二个参数代表缓存机制的选择,第三个参数代表超时时间
    NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:10];
    //4---用于获取请求--//用于获取服务器返回的头信息
    NSURLResponse * response = nil;
    //5----用于获取错误信息
    NSError * err = nil;
    //6---将URL转换为数据---//发送一个同步请求,第一个参数是请求的request,第二个参数:用于接收头信息的对象的地址,第三个参数:用于接收错误信息的对象的地址
    NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
    //7----解析数据
    id obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"%@",obj);
   
}

-(void)asynchronizeGET{
    //1********获取网络接口
    NSString * urlDtr = [NSString stringWithFormat:@"%@?sLogin=%@&sVerifyCode=%@&sPadId=%@",BaseUrl,@"yyj",@"",@""];
    //2********将接口字符串转换为url
    NSURL * url = [NSURL URLWithString:urlDtr];
    //3********发送URL请求
    NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:10];

//4********发送异步请求
    //方式一:block
    //    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse    *response, NSData *data, NSError *connectionError) {
    //        id obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
//        NSLog(@"block:%@",obj);
//    }];
  
    //方式二,比较常用--(用一下三个代理方法)
    [NSURLConnection connectionWithRequest:request delegate:self];
   
}
//代理方法
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    //与服务器连接成功,一般在此方法进行接收数据对象的初始化
    _muData  = [NSMutableData data];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    //接收到服务器返回数据,将接收到的数据进行拼接,之所以要进行拼接,是为了避免服务器返回数据较大时,导致的分段接收
    [_muData appendData:data];
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    //请求结束,可以在此方法进行解析
    id obj = [NSJSONSerialization JSONObjectWithData:_muData options:NSJSONReadingAllowFragments error:nil];
    NSLog(@"代理:%@",obj);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

时间: 2024-08-18 21:35:40

网络请求数据(同步GET,异步GET)的相关文章

android中网络请求数据,解析并添加到Listview中

今天我实现了网络请求数据,解析并将数据添加到Listview中.上个星期我有提到说要实现点击Listview中item实现不同的功能,还是没头绪.如有幸被阅读,希望指教一下.我用的是hTTPClient的post方法请求的数据.在实现请求之前,还有一个主activity跳转.代码如下: 请求activity代码: public class MachineInterface extends Activity { private ListView machineType; private Array

iOS网络编程之同步、异步、请求队列 2014-12-7

1. 同步意为着线程阻塞,在主线程中使用此方法会不响应任何用户事件.所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替. - (IBAction)grabURL:(id)sender { NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request star

网络请求数据 get请求方式 &nbsp; post请求 协议异步连接服务器 block异步连接服务器

网络请求三部 创建一个请求(添加接口,对接口进行解码,) 设定请求方式(将接口转为NSURL,设置请求[请求地址, 缓存策略, 超时时间],设置请求方式) 连接服务器([同步连接,异步连接]代理连接,block连接) #import "MainViewController.h" @interface MainViewController () @property (retain, nonatomic) IBOutlet UIImageView *ImageWiew; //get请求方法

UI 网络请求(同步GET,同步POST,异步GET,异步POST)具体操作

1 #import "MainViewController.h" 2 3 @interface MainViewController ()<NSURLConnectionDataDelegate> 4 5 @property (nonatomic, retain)UIImageView *imageView; 6 7 @property (nonatomic, retain)NSMutableData *data;// 可变数据 Data 用于拼接每次接受来的数据块 8 @

ios之NSURLConnection网络请求数据/GET与POST方法

目前可能只是单纯的贴上了一些demo的代码,但是这些代码都是请求数据应该是最基础的使用方法吧,在项目的实际开发中可能用到系统的会非常少,一般都是采用别人非常成熟的第三方开源库来实现数据请求,目前常用的第三方网络请求主要是以下几个:<h3 style="margin: 18px 0px; padding: 0px 0px 5px; border: 0px; outline: 0px; font-size: 22px; vertical-align: baseline; color: rgb(

HTTP请求中同步与异步有什么不同

普通的B/S模式就是同步,而AJAX技术就是异步,当然XMLHttpReques有同步的选项. 同步:提交请求->等待服务器处理->处理完毕返回.这个期间客户端浏览器不能干任何事. 异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕. 举个生动的例子吧: 同步就是你叫我去吃饭,我听到了就和你去吃饭:如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭. 异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭.豪享博娱乐

UWP开发:网络请求数据返回:Id =42 , Status = WaitingForActivation, Method = “{null}”, Result = “{Not yet computed}

今天突然遇到一个问题,UWP中网络请求返回:Id = 42, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}. 请求api是正确的,在浏览器内测试可以请求到数据,但是执行程序就是获取不了正确数据.郁闷了半天,突然才发现,由于我写的是异步网络请求的方法,而在调用时,忘记加 await async 关键字,导致没有异步调用.所以返回了Id = 42, Status = W

Swift 网络请求数据与解析

一: Swift 网络数据请求与处理最常用第三方 又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累.博客一篇写出来,好多就直接照抄,就没有实质性的把问题解决了,只是在发表的博客数量上 + 1 !!真心没意思.. 看看在Swift中是在怎样请求数据,解析数据加载图片这些的,也使我们最基本最常见的用法了,先说说这几个三方库: 第一个: Alamofire  (它的原作者就是AFNetworking的原作者,这个就不多说了,你要知道AFNetworki

网络请求数据(同步POST,异步POST)

//同步POST -(void)synPost{    //获取URL接口,不含参数    NSString *str = @"http://www.haninfo.cc:2060/Login/LoginData.asmx/Login";    //转码---拼接方法,为避免参数是汉字时,打印结果不显示汉字    str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    NSURL *u