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

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

原创
作者头像
好派笔记
修改于 2021-10-29 03:01:12
修改于 2021-10-29 03:01:12
2.9K00
代码可运行
举报
文章被收录于专栏:好派笔记好派笔记
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS小技能:文件上传和下载(断点下载、断点续传)
小文件下载:直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url;利用NSURLConnection发送一个HTTP请求去下载。
公众号iOS逆向
2022/08/22
1.6K0
iOS小技能:文件上传和下载(断点下载、断点续传)
IOS5开发-http get/post调用mvc4 webapi互操作(图片上传)
目前最流行的跨平台交互是采用http协议通过JSON对象进行互操作。这种方式最简单,也很高效。webservice+xml的方式似乎已经过时。 下面是我做的一个例子 webapi的代码 View Code public IEnumerable<Product> GetAllProducts()         {             Console.WriteLine(DateTime.Now.ToLongTimeString() + " : receive request.");          
阿新
2018/04/12
1.2K0
IOS5开发-http get/post调用mvc4 webapi互操作(图片上传)
iOS网络--HTTP请求HTTP请求
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-HTTP-request.html HTTP请求 1.NSURLConnectiong 1.同步GET请求 // 1.创建请求路径(url) NSURL *url = [NSURL URLWithString:@""]; // 2.通过请求路径(url)创建请求对象(request) NSURLRequest *request = [NSUR
程序员充电站
2018/05/31
2K0
iOS-网络编程(二)文件上传和断点离线下载
一. iOS中发送HTTP请求的方案 在iOS中,我们常用发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典最直接的一种方案 (iOS 9.0弃用) NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术 第三方框架AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多 二. NSURLConnection (已弃用) 虽然NSURLConnection已经被弃用,但是我们还是要了解N
xx_Cc
2018/05/10
2.4K0
iOS开发·网络请求方法总结复习(NSURLConnection,NSURLSession,AFNetworking)
iOS的开发中的网络下载方式包括NSData(最原始,实际开发基本不会用),NSURLConnection(古老又过气的苹果原生网络框架),NSURLSession(现在流行的苹果网络框架),AFNetworking,SDWebImage以及基于AFNetworking的二次封装框架例如XMNetworking,HYBNetworking等等。
陈满iOS
2018/09/10
3.4K0
iOS开发·网络请求方法总结复习(NSURLConnection,NSURLSession,AFNetworking)
iOS同步post请求
-(NSDictionary * )SynchronousRequestUserBaseFromRemoteWith:(NSString *)userId{
星宇大前端
2019/01/15
1.8K0
iOS 自己封装的网络请求,json解析的类
基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要。 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求,代码简单,主要是框架搭建。简单来说,就是一个请求类,一个解析类,还有若干数据类。 以下代码以公开的天气查询api为例: 1.网络请求类 我把常用的网络请求方法都封装好了,你只需要写自己的接口,传递apiName,params等参数就可以。 #pragma mark ios请求方式 //ios自带的get请求方
王大锤
2018/05/17
1.7K0
iOS网络get请求
//————————————————————————————————————————————————————————————————————————————
艳艳代码杂货店
2021/10/29
8800
iOS网络--『文件下载、断点下载』的实现(一):NSURLConnection
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-Resume-Download-NSURLConnection.html 目录 文件下载简介 1.1 文件下载分类 1.1.1 按文件大小划分 1.1.2 按实现方法划分 文件下载实现讲解 2.1 NSData(适用于小文件下载) 2.2 NSURLConnection 2.2.1 NSURLConnection(小文件下载) 2.2.2 N
程序员充电站
2018/05/31
1.9K0
网易云音频数据如何爬取?
在当今数字化时代,音频数据的获取和处理变得越来越重要。本文将详细介绍如何使用Objective-C语言构建音频爬虫程序,以爬取网易云音乐为案例。我们将从Objective-C的基础知识开始,逐步深入到爬取思路分析、构建爬虫框架、完整爬取代码等方面,最终总结出一套策略优化的实现方法。
小白学大数据
2023/11/27
3720
IOS开发之新浪围脖
  IOS开发和Web开发一样,网络请求方式包括Get和Post方式。Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据。下面还会提到如何在我们的项目中使用CocoaPods, CocoaPods的安装和使用教程请参考链接http://code4app.com/article/cocoapods-install-usage。上面详细的介绍了CocoaPods的安装过程和如何通过CocoaPods引入第三方类库。在本篇博客中提到CocoaPods,是因为
lizelu
2018/01/11
1.3K0
IOS开发之新浪围脖
iOS开发--服务器返回的数据解析
App要与服务器交互才能达到数据更新和获取资源 那么: 服务器返回客户端的数据,一般返回两种格式:JSON格式、XML格式 (文件下载除外)
孙寅
2020/06/02
2.5K0
iOS开发实战-时光记账Demo 网络版效果分析客户端部分服务端部分Demo地址简书主页
user表 相反Tally与Users的关系就是:一对多
gwk_iOS
2018/08/23
2.6K0
iOS开发实战-时光记账Demo 网络版效果分析客户端部分服务端部分Demo地址简书主页
ios网络编程学习
在网络编程中,从服务器获取的数据格式大致分为两种:JSON和XML。其中JSON作为一种轻量级的数据交换格式,正在逐步取代XML, 成为网络数据的通用格式。
tandaxia
2018/09/27
7780
网络:下载进度条
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159269.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
7510
使用 JDAudioCrawler 将下载的音频存储到本地存储
在当今数字化时代,音频数据的获取和处理变得越来越重要。本文将访问网易云音乐为案例,介绍如何使用JDAudioCrawler这个强大的工具,将音频数据存储下载到本地存储中。将详细介绍实现的流程和代码细节。
小白学大数据
2023/10/25
3070
iOS实现上传图片到服务器
当然如果你的项目大的话最好使用开源的网络库ASI或者AFNetWork,库里面都有现有的方法,
用户7705674
2021/10/29
2.8K0
POST上传各种数据类型(包括图片)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50914384
用户1451823
2018/09/13
2.8K0
iOS微信支付简单的使用
APP微信商户申请APPID步骤地址 微信支付 SDK与 Demo地址下载 微信SDK与 Demo 把微信支付 SDK 拖到工程上 SDK 添加微信支付依赖库
LeeCen
2018/10/11
9790
iOS微信支付简单的使用
苹果原生POST登录
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50913465
用户1451823
2018/09/13
8380
相关推荐
iOS小技能:文件上传和下载(断点下载、断点续传)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文