当前位置: 首页 > news >正文

泰安市网站建设怎么挑选网站建设公司

泰安市网站建设,怎么挑选网站建设公司,深圳网站免费制作,青岛快速排名文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession#xff0c;一般有两步操作#xff1a;通过NSURLSession的实例创建task#xff1b;执… 文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession一般有两步操作通过NSURLSession的实例创建task执行task。 而NSURLSessionTask也就是task可以把它当作所谓的任务。 NSURLSessionTask是一个抽象子类它有三个可以直接使用的具体子类NSURLSessionDataTaskNSURLSessionUploadTask和NSURLSessionDownloadTask。这三个类应用的三个基本网络任务获取数据、上传文件、下载文件。与数据有关的NSURLSessionDataTask也可以胜任上传下载的任务所以在iOS开发中经常使用。 HTTP定义了与服务器交互的不同方法最基本的方法有4种分别是GETPOSTPUTDELETE。URL全称是资源描述符我们可以这样认为一个URL地址它用于描述一个网络上的资源而HTTP中的GETPOSTPUTDELETE就对应着对这个资源的查 改 增 删 4个操作。 GET和POST区别 最主要的区别是GET是从API里面取数据POST是向API里发数据。GET使用URL或Cookie传参。而POST将数据放在BODY中。GET的URL会有长度上的限制则POST的数据则可以非常大。POST比GET安全因为数据在地址栏上不可见。对于GET只需要跑一趟就可以把数据传输到位而POST则需要先去进行一个请求的过程然后在把数据安排到位GET 安全性非常低POST安全性较高。但是执行效率却比POST方法好。 GET方法 GET请求步骤 确定请求路径URL也就是后台提供的接口。创建请求对象NSURLRequest如不加设置请求方法和请求头则使用默认请求头和GET请求方法。创建会话对象NSURLSession创建请求任务NSURLSessionDataTask根据需求选择合适的任务类型。执行任务解析请求返回的数据 //1.创建URL对象NSURL *url [NSURL URLWithString:http://s2.s100.vip:9886/valountary/user/SendString];//2.创建请求对象//第一个参数是你的URL//第二个参数是请求的缓存策略//第三个参数是设置请求超时时间NSMutableURLRequest *request [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];//3.设置请求方法为post[request setHTTPMethod:POST];//4.设置请求头信息//key(头字段名不区分大小写):Content-Type,//Value(头字段值)为下面三种(还是得根据后台给的来设置)//application/x-www-form-urlencoded后台接收为分开的参数时如?nameliyupassword123//application/json后台接收为json对象时//multipart/form-data上传文件时[request setValue:application/json forHTTPHeaderField:Content-Type];//5.设置请求体NSString *param [NSString stringWithFormat:username:%;password:%, self.userName, self.passWord];//把拼接后的字符串转换为data设置请求体这个data就是请求体request.HTTPBody [param dataUsingEncoding:NSUTF8StringEncoding];//6.建立会话 session支持三种类型的任务// NSURLSessionDataTask //加载数据// NSURLSessionDownloadTask //下载// NSURLSessionUploadTask //上传NSURLSession *session [NSURLSession sharedSession];//7.创建请求任务//NSLog(%,request.HTTPBody);NSURLSessionDataTask *dataTask [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {//data就是你获取到的数据你可以自行对其进行解析//error就是获取失败时出现的问题if (!error) {NSLog(-----%, [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:error]);} else {NSLog(666);}}];//8.启动任务[dataTask resume]; POST POST请求步骤 确定请求路径URL也就是后台提供的接口。创建请求对象NSMutableURLRequest设置请求方式为post。设置请求体根据后台所要求的数据格式以及类型json、xml等等设置。若有些后台接口有请求头则还应该设置请求头。创建会话对象NSURLSession创建请求任务NSURLSessionDataTask根据需求选择合适的任务类型。执行任务解析请求返回的数据 //1.创建URL对象NSURL *url [NSURL URLWithString:你要获取的地址];//2.创建请求对象//第一个参数是你的URL//第二个参数是请求的缓存策略//第三个参数是设置请求超时时间NSMutableURLRequest *request [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];//3.设置请求方法为post[request setHTTPMethod:POST];//4.设置请求头信息//key(头字段名不区分大小写):Content-Type,//Value(头字段值)为下面三种(还是得根据后台给的来设置)//application/x-www-form-urlencoded后台接收为分开的参数时如?nameliyupassword123//application/json后台接收为json对象时//multipart/form-data上传文件时[request setValue:application/json forHTTPHeaderField:Content-Type];//5.设置请求体NSString *param [NSString stringWithFormat:username % pwd %, self.username.text, self.pwd.text];//把拼接后的字符串转换为data设置请求体这个data就是请求体request.HTTPBody [param dataUsingEncoding:NSUTF8StringEncoding];//6.建立会话 session支持三种类型的任务// NSURLSessionDataTask //加载数据// NSURLSessionDownloadTask //下载// NSURLSessionUploadTask //上传NSURLSession *session [NSURLSession sharedSession];//7.创建请求任务NSURLSessionDataTask *dataTask [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {//data就是你获取到的数据你可以自行对其进行解析//error就是获取失败时出现的问题}];//8.启动任务[dataTask resume];NSURLSessionDataDelegate代理方法 如果项目需要在网络请求数据的过程中要做进一步的处理的话需要调用NSURLSession的代理方法。 通常使用代理方法需要先设置代理对象但是通过查看NSURLSessionDataDelegate文档我们可以看到如下代理属性delegate为只读状态。 那么我们需要怎样设置代理对象呢下面我们是代理方法的使用步骤。 #import UIKit/UIKit.hinterface ViewController : UIViewController NSURLSessionDataDelegate property (nonatomic, copy) NSMutableData *receiveData; end// 1.delegateQueue参数表示协议方法将会在(NSOperationQueue)队列里面执行。session的delegate属性是只读的,所以使用如下方法设置代理。NSURLSession *session [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];// 2.创建任务(因为要使用代理方法,就不需要block方式的初始化了)NSURL *url [NSURL URLWithString:[NSString stringWithFormat:http://xxx/phonelogin?yourname%yourpass%btnlogin,name,password]];NSURLSessionDataTask *task [session dataTaskWithRequest:[NSURLRequest requestWithURL:url]];// 3.执行任务[task resume];// 1.接收到服务器的响应 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler {//注意//此处需要允许处理服务器的响应才会继续加载服务器的数据。//若在接收响应时需要对返回的参数进行处理(如获取响应头信息等),那么这些处理应该放在该允许操作的前面。completionHandler(NSURLSessionResponseAllow); }// 2.接收到服务器的数据此方法在接收数据过程会多次调用 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {// 处理每次接收的数据[self.receiveData appendData:data]; }// 3.任务完成时调用如果成功error nil - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {if (error nil) {/*请求完成,成功或者失败的处理*/}else {NSLog(请求失败:%, error);} }AFNetWorking AFNetworking作为第三方库添加方式和之前博客中提到的MasonryJSONModel等相似。 AFNetworking是一个功能非常强大的框架主要是用于网络请求把复杂的原生代码封装好我们只需要简单的几步就可以完成网络请求。 添加头文件 #import AFNetworking.h//主要用于网络请求方法 #import UIKitAFNetworking.h//里面有异步加载图片的方法GET AFHTTPSessionManager* manager [AFHTTPSessionManager manager];manager GET:#(nonnull NSString *)# parameters:#(nullable id)# progress:#^(NSProgress * _Nonnull downloadProgress)downloadProgress# success:#^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)success# failure:#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure# //第一个参数NSString类型的请求路径AFNetworking内部会自动将该路径包装为 一个url并创建请求对象//第二个参数请求参数此处为nil//第三个参数进度回调此处为nil//第四个参数请求成功之后回调Block//第五个参数请求失败回调Block [manager GET:https://news-at.zhihu.com/api/4/news/before/20221023 parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {NSLog(GET 请求成功, %, responseObject[date]);//self.AFNetWorkTestGETDictionary responseObject;} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(GET 失败);}];POST 第一种 manager POST:#(nonnull NSString *)# parameters:#(nullable id)# progress:#^(NSProgress * _Nonnull uploadProgress)uploadProgress# success:#^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)success# failure:#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#//第一个参数NSString类型的请求路径AFN内部会自动将该路径包装为一个URL并创建请求对象//第二个参数请求参数以字典的方式传递AFN内部会判断当前是POST请求还是GET请求用来选择我直接拼接还是转换为NSData放到请求体中传递//第三个参数进度回调此处为nil//第四个参数请求成功后对调Block//第五个参数请求失败后回调Block#import UIKit/UIKit.hinterface ViewController : UIViewController NSURLSessionDataDelegate property (nonatomic, copy) NSMutableData *receiveData; property (nonatomic, copy) NSMutableDictionary *AFNetWorkTestPOSTDictionary; endAFHTTPSessionManager* manager [AFHTTPSessionManager manager];//创建参数[self.AFNetWorkTestPOSTDictionary setObject:Viper forKey:userName];[self.AFNetWorkTestPOSTDictionary setObject:Viper333 forKey:passWord];//发送POST请求[manager POST:要上传的URL parameters:self.AFNetWorkTestPOSTDictionary progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {//responseObject是请求成功返回的相应结果在AFN内部已经把相应结果转换为OC对象通常是字典或者数组} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(POST Failed);}]; 第二种 manager POST:#(nonnull NSString *)# parameters:#(nullable id)# constructingBodyWithBlock:#^(idAFMultipartFormData _Nonnull formData)block# progress:#^(NSProgress * _Nonnull uploadProgress)uploadProgress# success:#^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)success# failure:#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#//第一个参数请求路径NSString类型//第二个参数非文件参数以字典方式传递//第三个参数constructingBodyWithBlock在该回调中拼接文件参数//第四个参数progress//进度回调uploadProgress.completedUnitCount:已经上传的数据大小//uploadProgress.totalUnitCount数据的总大小//第五个参数success 请求成功的回调//task上传Task//responseObject:服务器返回的响应体信息//第六个参数failure 请求失败的回调//task上传Task//error错误信息//创建会话管理者AFHTTPSessionManager *manager [AFHTTPSessionManager manager];//处理非文件的参数模拟上传账号密码self.AFNetWorkTestPOSTDictionary [[NSMutableDictionary alloc] init];[self.AFNetWorkTestPOSTDictionary setObject:Viper forKey:userName];[self.AFNetWorkTestPOSTDictionary setObject:Viper333 forKey:passWord];//发送POST请求上传文件[manager POST:https://news-at.zhihu.com/api/4/news/before/20221023 parameters:self.AFNetWorkTestPOSTDictionary constructingBodyWithBlock:^(idAFMultipartFormData _Nonnull formData) {// 混合的数据为头像// 获取头像// 把头像转化为DataUIImage *image [UIImage imageNamed:1.png];NSData *imageData UIImagePNGRepresentation(image);//在BLOCK进行参数拼接//ImageUp.png是上传到服务器知乎以什么方式保存// 什么是MIME Type : 参考博客https://www.cnblogs.com/jsean/articles/1610265.html[formData appendPartWithFileData:imageData name:file fileName:1.png mimeType:image/png];//[formData appendPartWithFileURL:fileUrl name:filefileName:Image7.png mimeType:image/png error:nil];//[formData appendPartWithFileURL:fileUrl name:file error:nil];} progress:^(NSProgress * _Nonnull uploadProgress) {// progress 进度回调;//uploadProgress.completedUnitCount:已经上传的数据大小//uploadProgress.totalUnitCount数据的总大小NSLog(%f, 1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {NSLog(POST UP Succeed!);} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(POST UP Failed);}];UIImage *image [UIImage imageNamed:IMAGE.png];NSData *imageData UIImagePNGRepresentation(image);第一个参数要上传的文件二进制数据第二个参数文件参数对应的参数名称此处为file是该台服务器规定的第三个参数该文件上传到服务后以什么名称保存第四个参数该文件的MIMeType类型 [formData appendPartWithFileData:data name:file fileName:Image.png mimeType:application/octet-stream];第一个参数要上传的文件的URL路径第二个参数文件参数对应的参数名称此处为file是该台服务器规定的第三个参数该文件上传到服务后以什么名称保存第四个参数该文件的MIMeType类型第五个参数错误信息传地址 [formData appendPartWithFileURL:fileUrl name:file fileName:Image.png mimeType:application/octet-stream error:nil];第一个参数要上传的文件的URL路径第二个参数文件参数对应的参数名称此处为file第三个参数错误信息 [formData appendPartWithFileURL:fileUrl name:file error:nil];
http://www.hkea.cn/news/14258251/

相关文章:

  • 炫酷网站建设wordpress 4.8 zh cn
  • 网站空间可以换吗新乡seo顾问
  • 镇江电子商务网站建设常州外贸人才网
  • 网站建设资金预算wordpress如何访问量
  • 成都公司建网站建站塔山双喜
  • 东台网站建设找哪家好外贸google推广
  • 宁波网站建设选择荣胜网络wordpress 地区插件
  • 网站建设和推广话术6山东济宁
  • 免费建工作室网站网页设计公司兴田德润i优惠吗
  • 如何利用模板建站高端品牌网站建设兴田德润实力强
  • 网站推广的基本方法是什么专做实习生招聘的网站
  • 襄樊市网站建设易语言用客户端和服务器做网站
  • php培训机构企业做网站网站需要优化的小型公司
  • 企网官方网站婚纱网站建设目的
  • 深圳网站开发语言网站怎么做谷歌推广
  • 网站建设sql语句留言板网页设计图片叠加
  • 全栈网站开发关键词优化seo费用
  • 磁力链接 网站怎么做的模板网站的缺点
  • 长春网站推广优化网站开发建设付款方式
  • wordpress 小说多站网站建设单位不给数据库
  • 视觉营销网站企业网站优化推广
  • 廊坊做网站的公司计算机网络技术主修课程
  • 各大网站vip接口建设uc浏览器网页版打开
  • 企业建设网站流程图长春网站建设880元
  • 开一个个人网站多少钱百度seo排名优
  • 给别人做网站多少钱国内做钢铁的网站
  • 西安网站搭建的公司建站技巧
  • 网站群建设费用外贸出口退税流程
  • 农业信息网站建设烟台网站制作建设
  • 怎么样做企业网站企业网站开发说明