前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IOS中get同步异步请求与post同步异步请求

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

原创
作者头像
好派笔记
修改2021-10-29 11:01:12
2.8K0
修改2021-10-29 11:01:12
举报
文章被收录于专栏:好派笔记好派笔记
代码语言:javascript
复制
#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 *mutableData;
@end
@implementation ViewController

(void)viewDidLoad {
[super viewDidLoad];



// Do any additional setup after loading the view, typically from a nib.

 
}
pragma mark - get同步

(IBAction)getSyncButtonAction:(UIButton *)sender

{

NSString * BASE_URL= @"www.baidu.com";

//1.准备URL地址

NSURL *url = [NSURL URLWithString:BASE_URL];



//2.准备请求对象

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];



//2.1设置请求方式

[request setHTTPMethod:@"GET"];



//3.准备返回结果

NSURLResponse *response = nil;

NSError *error = nil;



//4.创建链接对象,并发送请求,并获取结果(需要的数据)

NSData *data =  [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];



//5.打印获取到的一些信息

NSLog(@"结果类型:%@",response.MIMEType);

NSLog(@"请求的网址:%@",response.URL);

NSLog(@"结果长度:%lld",response.expectedContentLength);

NSLog(@"请求到的结果:%@",data);



//6.解析文件

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];



//7.显示在textView里

self.textView.text = [NSString stringWithFormat:@"%@",dict];



 
}
pragma mark - get异步

(IBAction)getAsyncButtonAction:(UIButton *)sender

{

//1.准备url地址

NSURL *url = [NSURL URLWithString:_BASE_URL];

//2.创建请求对象

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

//3.创建链接对象,发送请求

[NSURLConnection connectionWithRequest:request delegate:self];



 
}
pragma mark - POST同步

(IBAction)postSyncButtonAction:(UIButton *)sender

{

//1.准备网址

NSURL *url = [NSURL URLWithString:_BASE_URL];



//2.准备请求对象

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];



//2.1设置请求方式

[request setHTTPMethod:@"POST"];



//2.2设置请求参数

 
warning 设置请求参数,需要的是NSData类型

NSData *param = [_BASE_URL1_PARAM dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPBody:param];



//3.创建链接对象,并发送请求,获取结果

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];



//4.解析

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];



//5.显示

self.textView.text = [NSString stringWithFormat:@"%@",dict];

 
}
pragma mark - POST异步

(IBAction)postAsyncButtonAction:(UIButton *)sender

{

__block ViewController *weakSelf = self;



//1.准备地址

NSURL *url = [NSURL URLWithString:_BASE_URL];

//2.创建请求对象,并设置请求方法和参数

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"POST"];

[request setHTTPBody:[_BASE_URL1_PARAM dataUsingEncoding:NSUTF8StringEncoding]];



//3.创建链接对象,发送请求,在block内部完成分析

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new]  completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    //NSLog(@"%@",data);



    //4.解析

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];



    //5.回到主线程,进行更新页面

    dispatch_sync(dispatch_get_main_queue(), ^{

        weakSelf.textView.text = [NSString stringWithFormat:@"%@",dict];

    });



}];







 
}
pragma mark - 清除

(IBAction)clearButtonAction:(UIButton *)sender

{

_textView.text = nil;

 
}
pragma mark - 实现协议方法
pragma mark 开始接收请求结果

(void)connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse )response

{

//初始化

self.mutableData = [NSMutableData data];

 
}
pragma mark - 接收数据

(void)connection:(NSURLConnection )connection didReceiveData:(NSData )data

{

//拼接接收到的数据

[self.mutableData appendData:data];



 
}
pragma makr - 接收完毕

(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

//解析

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_mutableData options:NSJSONReadingAllowFragments error:nil];

_textView.text = [NSString stringWithFormat:@"%@",dict];

 
}
pragma mark - 接收错误

(void)connection:(NSURLConnection )connection didFailWithError:(NSError )error

{
}- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

 
}
@end
</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档